函数的Declaration(申明)和definition(定义)的关系,
声明就是告诉计算机有这个函数,至于函数是什么样子的,并没有说明。
而定义则是为名字分配存储空间。
.h文件中一般都是申明,所以只是告诉计算机有这个名字。如果代码中有这个名字,就会到代码段中去找这个函数名。但是.cpp就不一样了,如果你包含了它,如果编译器看到了他就会试着个它分配存储空间。假如,a1.cpp, include 了 b2.cpp,那么如果a1.cpp先编译,则b2.cpp会在a1.cpp中展开,所以,编译器会为a1.cpp,b2.cpp中所有的函数分配存贮空间,现在编译完了a1.cpp,接着要编译b2.cpp了,但是编译器会发现,b2.cpp的很多名字都已经定义过了,因为,在编译a1.cpp的过程中,b2.cpp的函数等都被分配了空间。。所以它就报错了,一般是说XXX已经在XXX.obj定义过了。。不知道说的明白了没有,其实我也是一知半解。。