包括stdio和stddef

时间:2014-02-24 11:31:36

标签: c syntax stdio

我目前正在准备一个C认证,在课程材料中有关指针NULL,有这条线麻烦我:

  

如果要使用NULL符号,则必须包含以下头文件之一: stdio.h stddef.h。 NULL符号在那里定义。

(Bold在源头)

自强调or以来,我将其视为“永不包括两者”。这是一个真正的规范,还是只是课程材料中的(许多)缺陷之一?

3 个答案:

答案 0 :(得分:2)

由于stdio.h包含stddef.h,因此无法同时包含这两项内容。但是如果你愿意的话,你可以包括两者,因为有一个警卫可以避免多次包含。

答案 1 :(得分:1)

要定义NULL的官方位置在<stddef.h>。但是,在大多数实现中,您可以添加<stdio.h><string.h>(或其他一些包含内容)来提取它。

包含这两者是非常安全的,如果你确实需要它们,你应该这样做(反之,如果你不需要它,你不应该包括<stdio.h>。)

答案 2 :(得分:0)

您可以包含其中一个或两个。首先要写的那个将声明NULL作为第一个,它不会被声明两次。