当我阅读 gcc 提供的头文件 stddef.h 时,我发现了一个可能的错误。起初,我确定这是一个错误。但是在我阅读了三个不同版本的 gcc(3.4.5、4、4、3 和 4、6、3)的头文件 stddef.h 之后,我发现它们在这一点上是相同的,所以我不确定。也许我错了。
#if (!defined(_STDDEF_H) && !defined(_STDDEF_H_) && !defined(_ANSI_STDDEF_H) \
&& !defined(__STDDEF_H__)) \
|| defined(__need_wchar_t) || defined(__need_size_t) \
|| defined(__need_ptrdiff_t) || defined(__need_NULL) \
|| defined(__need_wint_t)
上面的代码是stddef.h的开头。以下是 stddef.h 的结尾。有一对。
#endif /* !_STDDEF_H && !_STDDEF_H_ && !_ANSI_STDDEF_H && !__STDDEF_H__
|| __need_XXX was not defined before */
我认为这行有一个错误:
|| __need_XXX was not defined before */
“不”字要不要删掉?
这很容易,但如果是错误,为什么没有发现并改变错误?