引用:http://www.cnblogs.com/renxs/archive/2012/01/11/2319132.html
在学习C++之前我们需要了解C++文件结构。C++的代码文件有头文件(*.h)和代码文件(*.cpp)之分。两者合起来我们称为单元文件。实际上 编译器也是一个cpp一个cpp文件的编译然后再连接各个编译文件的结果文件(C++编译过程会在以后篇章介绍)。C++/C程序的头文件以“.h”为后 缀,C程序的定义文件以“.c”为后缀,C++程序的定义文件通常以“.cpp”为后缀(也有一些系统以“.cc”或“.cxx”为后缀)。
大多数情况下头文件和代码文件是一一对应的。在头文件里主要写一些函数(全局函数),变量(全局变量),数据类型的定义(其实就是用户自定义类,类中的函数实现一般在代码文件中)等声明。这样可以在多个代码文件*享这些函数,变量和数据类型的定义等。
头文件
头文件是不被编译的,cpp中引用头文件实际上是当预编译的时候将头文件中的内容插入到cpp文件中。因此变量的定义、函数的定义不要写到头文件中。因为头文件很可能要被多 个cpp引用。当连接的时候可能会出现重复定义的情况。
有2种常见的错误:
1>同一编译单元的头文件重复引用,可能会出现重复定义
2>不同编译单元引用同一头文件,链接时发现重复定义
1、为了防止头文件被重复引用,应当使用 #ifndef #define ... #endif 结构
但是是不是所有的头文件加上这个,能防止出现重复引用导致重复定义的错误呢?
答案是否定的。在不同的编译单元引用同一头文件的时候,还是会出现重复定义的错误。
这种结构只能防止第一种情况下的错误。
2、用 #include <test>或者<test.h>格式来引用标准库的头文件(编译器将从标准库目录开始搜索)。
用 #include “test”或者"test.h" 格式来引用非标准库的头文件(编译器将从用户的工作目录开始搜索)。
ps:VC中编绎C和C++是分大小写的