2014-02-24 163 views
0

我米目前正在筹备一个3C认证,在与指针NULL课程材料,还有这条线界河麻烦我:包括标准输入输出和stddef

如果你想使用你必须 零符号

包括以下头文件之一: stdio.h stddef.h。 NULL符号在那里定义。

(粗体是源)

由于or强调,我把它读作“永不包括”。这是一种真正的规范还是仅仅是课程材料中(许多)缺陷之一?

+2

也许他们想强调它是或者不是xor;) –

+1

按照惯例,OR是包容性的,所以你应该把“A或B”看作“A或B,或者A和B”。 – michaelmeyer

回答

0

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

2

由于stdio.h包含stddef.h,所以包含两者都是无用的。但是如果你愿意的话,你可以包括这两个,因为有一个警卫来避免多重包含。

1

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

将两者都包括在内是非常安全的,如果你真的需要它们,你应该这么做(反之,如果你不需要,你不应该包括<stdio.h>)。

相关问题