gpt4 book ai didi

c - GCC 是否保护程序员免受多次包含 C 的库头文件的影响?

转载 作者:太空宇宙 更新时间:2023-11-04 00:12:32 26 4
gpt4 key购买 nike

是否可以保证每个库 header 看起来都像那样?

#ifndef STDIO_H
#define STDIO_H
/* contents here... */
#endif

你能给我推荐一个来源吗?

谢谢!

最佳答案

不,GCC 不会保护您免受不使用您所描述的包含防护的库的影响——这取决于相关的库。 (而不是 GCC 的一部分。)

所有著名的 C 标准库(glibc、newlibc、ulibc)都会正确地保护它们的包含。 (由于它们被广泛使用,这种明显的问题很快就会被发现。)

编辑:在您第二次发表评论后,您的问题现在更有意义了。引用自 ISO/IEC 9899:1999 (C99),第 7.1.2 章标准标题,第 4 段,第一句:

Standard headers may be included in any order; each may be included more than once in a given scope, with no effect different from being included only once, except that the effect of including <assert.h> depends on the definition of NDEBUG (see 7.2).

这意味着,如果您遇到任何标准 C 库给您带来麻烦,那么它就坏了。

关于c - GCC 是否保护程序员免受多次包含 C 的库头文件的影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1171120/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com