【问题标题】:With or without the inclusion guards in C headers, it still works. What is it for then?无论有没有 C 头文件中的包含保护,它仍然有效。那是为了什么?
【发布时间】:2013-11-22 05:38:46
【问题描述】:

我尝试在 C 标头中使用或不使用包含保护进行编译,并确保多个 c 文件包含相同的标头。这将导致重新声明,并且是允许的。那它有什么用呢?

【问题讨论】:

    标签: c header include guard inclusion


    【解决方案1】:

    您防止循环包含:

    示例

    /** file A.h */
    #include "B.h"
    
    /** file B.h */
    #include "A.h"
    

    如果您包含“A.h”或“B.h”,会发生什么?您的预处理器将尝试包含另一个文件,该文件将包含另一个文件,该文件将包含另一个文件,...

    守卫确保您不会多次包含该文件。

    【讨论】:

    • 如果是这种情况会导致编译器错误吗?因为我只是在 dev cpp 中尝试过,它仍然可以编译。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多