如何避免头文件被重复包含?
一般情况下,我们都是把函数声明、类定义、模板定义等写到一个头文件里,需要时将相应的头文件用#include包含到源文件(*.cpp文件)里来。但头文件中又允许包含其它的头文件,这样就难免发生某个头文件被重复地包含。我们可以使用编译预处理命令避免这种情况的发生。
例如,你想确保头文件max.h不会被重复包含,则你可以采取如下的形式:
第一条预处理命令是说,如果MAXMIN_H不为真,说明此文件没被包含过,此命令后面的源代码有效(相当于:‘如果大门没关,请您进来’);
第二条预处理命令把MAXMIN_H置为真(相当于请您把门锁插上,不让第二个人进来)。
最后一条预处理命令是为了标出接受上述处理的源程序的范围(相当于您已经走到了后门)。
----------------------------------------------作者声明-----------------------------------------
我是一个老头,65岁,编过10年程序,在大学教过15年书,写了一本书,名为《C++释难解惑》,这几年来一直在投稿。出版社对我的书稿评价很好,但他们就是由于经济上的风险。总是在出版的最后关头反悔。其中北京****出版社已经签字画押的情况下反悔;北京****出版社与我签过电子合同;书稿在**大学出版社放了9个月,还让我请名人写序言,最后说现在书很难卖,并且还给我发了个近半年的图书销售的excel文档让我看,希望我理解出版社。我只好仰天嗟叹了。
有编辑朋友建议我把书稿放到网上让读者试读,以印证读者的人数和满意度。我想这是一个办法,即使永远不能出版,也不至于烂在肚子里。并且我在网上也看到这个办法成功的先例,例如《C语言深度解剖》,后来就由北航出版社出版了。
《C语言深度解剖》的作者采用的方法是把书稿上传到网上。我想采用化整为零的方法,每周起码在我的CSDN博客里发一篇文章,是书稿里的内容稍加改造的。之所以这样做确实出自于私心,就是想借此赚取CSDN的积分。因为我以前忙于教书,无暇经常光顾CSDN,所以几乎没有积分,这样是不能被大家所认识的。
博文与书稿上的文字可能有极少的字面上的不同。