如何检查是否定义了 header guard
How check if header guard is defined
我有这些交给我解决的文件,但我对头部防护有一些疑问。
在testGuards.h
中有一个定义,如__HEADER_GUILD_SAFEBOX__
,但是#ifdef
询问是否定义了__GUILD_SAFEBOX__
,所以我没有知道这个 #ifdef
是否应该询问 __HEADER_GUILD_SAFEBOX__
而不是 __GUILD_SAFEBOX__
.
在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!" )
我有这些交给我解决的文件,但我对头部防护有一些疑问。
在
testGuards.h
中有一个定义,如__HEADER_GUILD_SAFEBOX__
,但是#ifdef
询问是否定义了__GUILD_SAFEBOX__
,所以我没有知道这个#ifdef
是否应该询问__HEADER_GUILD_SAFEBOX__
而不是__GUILD_SAFEBOX__
.在
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!" )