【发布时间】:2023-11-05 20:43:01
【问题描述】:
在阅读Is this proper C declaration? If so, why does it not work?时我在想
#include <stdio.h>
int main(void) {
int bool = 0;
return bool == 0;
}
这个程序是否严格遵守?换句话说,是允许stdio.h 包含stdbool.h 还是禁止这样做?这是规范规定的吗?
【问题讨论】:
在阅读Is this proper C declaration? If so, why does it not work?时我在想
#include <stdio.h>
int main(void) {
int bool = 0;
return bool == 0;
}
这个程序是否严格遵守?换句话说,是允许stdio.h 包含stdbool.h 还是禁止这样做?这是规范规定的吗?
【问题讨论】:
我不确定它是否具有任何权威性,但这是 Plauger 所说的(当然它是针对 c89 的)。
标准 C 库提供 15 个标准头文件。标头 有几个属性
它们是相互独立的。没有标准标题要求 首先包含另一个标准标题,以使其正常工作。 任何标准标头也不包含另一个标准标头。
我在 c99 或 c89 中找不到任何提及。
编辑
我可以看到inttypes.h 包括stdint.h
7.8-1
标头
<inttypes.h>包含标头<stdint.h>并对其进行扩展 由托管实现提供的额外设施。
【讨论】:
C 标准头文件不能包含其他头文件。这与明确允许的 C++ 不同。
C99 标准,第 7.1.3 节
每个标头声明或定义其相关子条款中列出的所有标识符[...] 没有保留其他标识符。
【讨论】:
bool,你应该包括_Bool,您可以像在您的示例中一样使用 bool。