【发布时间】:2015-12-27 19:40:45
【问题描述】:
如果我有两个像下面这样的文件
//file1.h
#include "file2.h"
//file2.h
#include "file1.h"
这种循环依赖可能发生在两个以上的文件中,为了简单起见,我只列出了两个。在这种情况下会发生什么? 我也很想知道 C++ 标准是否限制这种情况发生。
【问题讨论】:
标签: c++ loops compilation c-preprocessor header-files
如果我有两个像下面这样的文件
//file1.h
#include "file2.h"
//file2.h
#include "file1.h"
这种循环依赖可能发生在两个以上的文件中,为了简单起见,我只列出了两个。在这种情况下会发生什么? 我也很想知道 C++ 标准是否限制这种情况发生。
【问题讨论】:
标签: c++ loops compilation c-preprocessor header-files
标准不限制这种递归。避免它的常见做法是使用
#ifndef FILE_H
#define FILE_H
// content of the header file
#endif
#pragma once
// content of the header file
请注意#pragma one,虽然被许多编译器支持,但不是标准的一部分:
#pragma once是一个非标准但被广泛支持的预处理器指令
【讨论】: