如何检查是否定义了 header guard

How check if header guard is defined

我有这些交给我解决的文件,但我对头部防护有一些疑问。

  1. testGuards.h中有一个定义,如__HEADER_GUILD_SAFEBOX__,但是#ifdef询问是否定义了__GUILD_SAFEBOX__,所以我没有知道这个 #ifdef 是否应该询问 __HEADER_GUILD_SAFEBOX__ 而不是 __GUILD_SAFEBOX__.

  2. testCpp.h中我问是否已经定义了__GUILD_SAFEBOX__,但是,据我所知,它已经在testGuards.h中定义了,但是这里(在cpp),我们从来没有进入过#ifdef,我也不知道,怎么知道没有定义,如果没有定义,再定义。

我有 2 个代码。

testGuards.h

#ifndef __HEADER_GUILD_SAFEBOX__
#define __HEADER_GUILD_SAFEBOX__

#include "stdafx.h"

#ifdef __GUILD_SAFEBOX__
[...]
#endif

testCpp.cpp

#include "stdafx.h"

#ifdef __GUILD_SAFEBOX__
#include "../common/tables.h"
[...]
#endif

您可以打印一条消息,因为包含 header。之后你可以 manually/automatically 检查你想要的任何东西。

关注这个answer

警告指令可能是最接近的,但并不完全platform-independent:

#warning "C Preprocessor got here!"

据我所知,这适用于除 MSVC 之外的大多数编译器,在 MSVC 上你必须使用 pragma 指令:

#pragma message ( "C Preprocessor got here!" )