我发现了一些预处理指令,其中宏名称和替换列表是相同的。例如,gcc 提供的 stdbool.h 中的一些预处理指令。
#else /* __cplusplus */
/* Supporting <stdbool.h> in C++ is a GCC extension. */
#define _Bool bool
#define bool bool
#define false false
#define true true
#endif /* __cplusplus */
我不明白程序员为什么要编写这些预处理指令。它们没用,替换会浪费时间。我知道这不会导致无限递归。如何避免无限递归?C标准中有哪些相关规定?