简单地说,该标准没有提供“头文件”,因此它不能提供自动包含保护头文件.该标准仅提供预处理器指令#include,其余仅仅是约定.没有什么可以阻止你向前声明所有内容并且不使用头文件(除了怜悯任何人应该维护该代码……).
所以头文件不是特别的,没有办法说“这是一个头文件,守护它”,但为什么我们不能保护所有获得#include’d?因为#include比其他语言的模块系统更强大. #include使预处理器粘贴到其他文件中,不一定是头文件.有时,如果在不同文件中的一堆不同命名空间中使用相同的using和typedef声明,这可能很方便.你可以在一个文件中收集它们并在一些地方#include它们.您不希望自动包含防护措施阻止您这样做.
使用#ifndef和#define有条件地包含头也只是惯例.该标准没有“包括警卫”的概念. (然而现代编译器实际上都知道包括警卫.识别包括警卫可以允许更快的编译,但它与正确实现标准无关.)
变得迂腐
该标准确实使用了“header”这个词,特别是在参考C和C标准库时.但是,#include的行为是在§16.2*源文件*包含(emph.mine)下定义的,并且它不对头文件授予任何特殊权限.
努力将适当的模块系统纳入C标准.
总结以上是内存溢出为你收集整理的为什么不包括c中的守卫默认?全部内容,希望文章能够帮你解决为什么不包括c中的守卫默认?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)