包含不同的标头时,C实现是否可以隐式包含标准标头?

时间:2011-07-14 14:15:45

标签: c header c99

在阅读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还是禁止这样做?这是由规范指定的吗?

2 个答案:

答案 0 :(得分:5)

C标准标头不能包含其他标头。这与C ++不同,它是明确允许的。

C99标准,第7.1.3节

  

每个标头声明或定义其相关子条款中列出的所有标识符[...]   没有保留其他标识符。

答案 1 :(得分:3)

我不确定它是否具有权威性,但这是Plauger所说的(授予它为c89)。

  

标准C库提供十五个标准头文件。标题   有几个属性

     

他们是相互独立的。没有标准标题要求   首先要包含另一个标准标题,以使其正常工作。   任何标准标题都不包含其他标准标题

我在c99或c89中找不到任何提及。

修改

我可以看到inttypes.h包含stdint.h

7.8-1

  

标题<inttypes.h>包含标题<stdint.h>并对其进行扩展   以及托管实施提供的额外设施。