C/C++语言多文件的组织,很多人问过,也很多人答过,不少人的答案是把.c文件#include进来,那是错误的指引!语法上,#include的是头文件(注意“头文件”和“头”是两个概念,头包含头文件,但还包含头文件中所声明的函数和变量的定义代码文件,由两份不同的文件组成头,头文件通常是.h,实现代码文件是.c/.cpp),不是把整个实现文件包含进来。
书上P.59【小心地雷】一段:“因为头文件包含在多个源文件中,所以不应含有变量或函数的定义。”这里意思是说,逻辑上作为头文件的文档,是不应包含变量或函数的定义代码的,因此,若你把一个.c/.cpp文件用#include包含进来,它是头文件的身份,而你的.c/.cpp文件是写着具体实现代码的。
#include一个.c/.cpp文件的害处多多,完全不合语言规范,其弊端由书上的叙述就可以看出,我就不多说了。多看文字,少看代码,这是我的读书忠告。代码应是阅读文字理解之后自己写出来,而不是先看代码受了暗示再试图写自己的代码,到那个时候你的脑中就只有别人的代码而不是自己想出来的,这就是很多人读完了书、做完了习题,到最后一个自己的程序也写不出来的根本原因。