如何防止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)
但它似乎没有用.
它确实工作正常:文件被重复包含,但#ifdndef/#define/#endif保护的部分不会重复,这会打破循环.
使用编译器生成预处理输出并自行查看.使用GNU CC,您需要在.c [pp]文件中使用"-E"选项,如下所示:
gcc -E $(CFLAGS) -o foo.i foo.cpp
Run Code Online (Sandbox Code Playgroud)