使用#include进行无限编译循环

时间:2015-12-27 19:40:45

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

如果我有两个文件,如下面

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

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

1 个答案:

答案 0 :(得分:4)

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

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是一种非标准但广泛支持的预处理程序指令