明确告诉编译器只包含该文件一次有什么意义?这在默认情况下不是很有意义吗?有什么理由多次包含单个文件吗?为什么不直接假设呢?是不是和特定的硬件有关?

推荐答案

这里有多个相关问题:

  • Why is 100 not automatically enforced?

  • Why would you want to include a file multiple times?
    其他答案中给出了几个原因(Boost.PreProcessor、X-Macros,包括数据文件).我想添加一个特殊的"避免代码重复"的例子:OpenFOAM鼓励在函数中使用#include个零碎代码是一个常见概念的风格.参见示例this讨论.

  • Ok, but why is it not the default with an opt-out?

  • Why has 101 not become a standardized feature yet (as it is widely supported)?

C++相关问答推荐

判断数组是否存在于一组数组中

使用相同的内存地址,但代码在程序内存中额外占用 8 个字节?

将“int_least8_t”转换为“char”时如何发出警告?

C语言中的“对象”是什么?

如何获得 C 函数的基本编译二进制代码?

C 编程语言中有范围运算符吗?

使用 .* 宽度说明符调用 sprintf 时出现奇怪的警告

C 是否有 [[nodiscard]] 机制在忽略值时发出警告?

C unsigned long 与转换未正确添加

使用整数存储许多布尔值是否值得?

| vs < 用于标准输入和标准输出,在 C 中使用拼接、管道和 tee 命令

你怎么能告诉一台计算机它正在添加而不在 Assembly 中添加 addl

为什么 gcc -march=znver1 限制 uint64_t 向量化?

为什么分段错误不可恢复?

char 数组是否保证为空终止?

为什么有 i++;一世 - ;紧随其后?

(x | y) - y 为什么不能简单地是 x 甚至 `x | 0`

Xlib 和 Firefox 行为

“for”循环内的“for”循环可以使用相同的计数器变量名吗?

在 C 中无法返回数组实际上意味着什么?