我目前正在准备一个C认证,在课程材料中有关指针NULL,有这条线麻烦我:
如果要使用NULL符号,则必须包含以下头文件之一: stdio.h 或 stddef.h。 NULL符号在那里定义。
(Bold在源头)
自强调or
以来,我将其视为“永不包括两者”。这是一个真正的规范,还是只是课程材料中的(许多)缺陷之一?
答案 0 :(得分:2)
由于stdio.h
包含stddef.h
,因此无法同时包含这两项内容。但是如果你愿意的话,你可以包括两者,因为有一个警卫可以避免多次包含。
答案 1 :(得分:1)
要定义NULL的官方位置在<stddef.h>
。但是,在大多数实现中,您可以添加<stdio.h>
或<string.h>
(或其他一些包含内容)来提取它。
包含这两者是非常安全的,如果你确实需要它们,你应该这样做(反之,如果你不需要它,你不应该包括<stdio.h>
。)
答案 2 :(得分:0)
您可以包含其中一个或两个。首先要写的那个将声明NULL作为第一个,它不会被声明两次。