C++ 包含的无限编译循环

C++ 包含的无限编译循环,c++,loops,compilation,c-preprocessor,header-files,C++,Loops,Compilation,C Preprocessor,Header Files,如果我有两个像下面这样的文件 //file1.h #include "file2.h" //file2.h #include "file1.h" 这种循环依赖可能发生在两个以上的文件中,只是为了简单起见,我只列出了两个。在这种情况下会发生什么? 我还想知道C++标准是否限制了这种情况的发生。 < P>标准不限制这种递归。通常的做法是使用 或: 请注意,尽管pragma one受到许多编译器的支持,但它不是标准的一部分: pragma once是一个非标准但得到广泛支持的预处理器指令 应该指出,

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

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

< P>标准不限制这种递归。通常的做法是使用

或:

请注意,尽管pragma one受到许多编译器的支持,但它不是标准的一部分:

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


应该指出,PrimMA曾经不是标准的C++或C,而头保护是标准的。看,安德斯说得通。包括。
#ifndef FILE_H
#define FILE_H

// content of the header file

#endif
#pragma once

// content of the header file