我知道它可以防止多次包含头文件.但是假设我确保只在一个.cpp文件中包含此文件一次.是否还有我需要这种安全防范的情况?
您可以保证您的代码只包含一次,但是您能保证任何人的代码都包含一次吗?
此外,想象一下:
// a.h
typedef struct { int x; int y; } type1;
// b.h
#include "a.h"
typedef struct { type1 old; int z; } type2;
// main.c
#include "a.h"
#include "b.h"
Run Code Online (Sandbox Code Playgroud)
不好了!我们main.c只包括一次,但b.h包括a.h,所以a.h尽管我们尽了最大的努力,但我们得到了两次.
现在想象一下,这背后隐藏着的三个或更多层#includeS和它是被包含了两次轻微内部使用,只有头和因为头一个这是一个问题#undef编一个宏,它定义,但第二集#define再次d,并打破了一些代码,需要花费几个小时来弄清楚为什么存在相互矛盾的定义.