C头文件中的包含周期

MSu*_*ong 1 c header include

如何防止C中的包含循环?即.你不应该有#include"bh",其中#include的"ch"是#include的"啊".我正在寻找一种方法来防止使用某种C指令发生这种情况.

我本以为这会阻止这种情况发生:

内容啊:

#ifndef __A_H
#define __A_H

#include "b.h"

#endif // __A_H
Run Code Online (Sandbox Code Playgroud)

bh的内容:

#ifndef __B_H
#define __B_H

#include "c.h"

#endif // __B_H
Run Code Online (Sandbox Code Playgroud)

ch的内容:

#ifndef __C_H
#define __C_H

#include "a.h"

#endif // __C_H
Run Code Online (Sandbox Code Playgroud)

但它似乎没有用.

flo*_*rin 7

它确实工作正常:文件重复包含,但#ifdndef/#define/#endif保护的部分不会重复,这会打破循环.

使用编译器生成预处理输出并自行查看.使用GNU CC,您需要在.c [pp]文件中使用"-E"选项,如下所示:

gcc -E $(CFLAGS) -o foo.i foo.cpp
Run Code Online (Sandbox Code Playgroud)