2017-04-11 68 views
0

我有這些文件給我解決,我對頭部防護有些疑問。如何檢查是否定義了頭部防護

  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 
+2

包含雙下劃線的標識符(包括宏名稱)是[保留用於實現](htt p://stackoverflow.com/a/228797/501250)(編譯器和標準庫)。 **你不應該使用它們** – cdhowie

+0

我認爲你並不是要把stdafx.h放在文件第一行以外的任何地方 –

+0

@cdhowie非常感謝,對我非常有用,我收穫了所有。 我將__HEADER_GUILD_SAFEBOX__更改爲__GUILD_SAFEBOX_H並正常工作。 – Alejoo

回答

0

你可以打印一個消息,作爲頭包含在內。之後,您可以手動/自動檢查任何你想要的。

關注這個answer

警告指令可能是你會得到最接近的,但它不是完全獨立於平臺:

#warning "C Preprocessor got here!" 

AFAIK這適用於大多數的編譯器除了MSVC,其上您必須使用編譯指示:

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

我用過它,但起初它不起作用,因爲我從來沒有很好地定義過頭。 – Alejoo