c – 为什么不自动假设#pragma?

告诉编译器只包含一次文件有什么意义?默认情况下它不会有意义吗?是否有任何理由多次包含单个文件?为什么不假设呢?是与特定硬件有关吗?

解决方法:

这里有多个相关问题:

>为什么#pragma一旦不自动执行?
因为在某些情况下您希望多次包含文件.
>为什么要多次包含文件?
其他答案(Boost.Preprocessor,X-Macros,包括数据文件)中给出了几个原因.我想添加一个“避免代码重复”的特定示例:OpenFOAM鼓励一种样式,其中#includeing函数中的位和部分是一个常见的概念.参见例如this讨论.
>好的,但是为什么它不是选择退出的默认值?
因为它实际上并未由标准指定. #pragmas是定义特定于实现的扩展.
>为什么#pragma曾经没有成为标准化功能(因为它得到广泛支持)?
因为以平台无关的方式固定“同一个文件”实际上是非常困难的. See this answer for more information.

上一篇:浅析C++预处理命令


下一篇:agc38C LCMs