为什么C/C++的预处理指令#include不自动让所包含的文件只包含一次?

在C/C++中#include所包含的头文件里面必须显式声明
#ifndef__HEADER_H_DEFINE__
#define__HEADER_H_DEFINE__
#endif
或者有些编译器支持
#pragmaonce
编译器完全有能力在执行预处理指令#include时使同一个文件只包含一次,但是却没有这么做,为什么?是否有需要包含同一个文件超过一次的情况?
一只萌萌小番薯
浏览 772回答 2
2回答

翻翻过去那场雪

1、C/C++的函数和变量都可以重复声明。条件判断是为了防止不必要的函数被声明,从而造成冲突。他是为了避免重复编译,而不是解决重复声明。2、#pragmaonce同一个文件不会被编译多次。注意这里所说的同一个文件是指物理上的一个文件,而不是指内容相同的两个文件。C/C++没有Java那种每个类对应一个文件的规定,所以即使使用了#pragmaonce也应该在头文件里面加上条件判断。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript