【问题标题】:Infinite compilation loop with #include#include 无限编译循环
【发布时间】:2015-12-27 19:40:45
【问题描述】:

如果我有两个像下面这样的文件

//file1.h
#include "file2.h"
//file2.h
#include "file1.h"

这种循环依赖可能发生在两个以上的文件中,为了简单起见,我只列出了两个。在这种情况下会发生什么? 我也很想知道 C++ 标准是否限制这种情况发生。

【问题讨论】:

    标签: c++ loops compilation c-preprocessor header-files


    【解决方案1】:

    标准不限制这种递归。避免它的常见做法是使用

    include-guards

    #ifndef FILE_H
    #define FILE_H
    
    // content of the header file
    
    #endif
    

    #pragma once:

    #pragma once
    
    // content of the header file
    

    请注意#pragma one,虽然被许多编译器支持,但不是标准的一部分:

    #pragma once 是一个非标准但被广泛支持的预处理器指令

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多