2013-03-31 44 views
2

我已經編寫了一個包含幾個宏和幾十個宏的頭文件(.h)文件。每宏之前我已經編寫了這一點:使用宏檢查宏名稱的存在

#if defined (MACRO_NAME) 
#warning "Macro name MACRO_NAME is already in use. Please rename the macro" 
#endif 

這將是巨大的,有一個宏,做所有的檢查的東西,以增加代碼的可讀性,但指令不允​​許裏面的宏。

,我想這樣的事情:

#define CHECK_MACRO_NAME(MACRO_NAME) \ 
    #if defined (MACRO_NAME) \ 
    #warning "Macro name "MACRO_NAME" is already in use. Please rename the macro" \ 
    #endif 

你知不知道這樣做的任何其他(更好)的方式?

+0

我覺得你的方式是不夠精細和可讀性。 – deepmax

+0

謝謝:)有沒有更好的解決方案,我想... –

回答

5

更好的方法可能就是讓您的編譯器執行檢查。

/* test.c */ 

#define MACRO 

#define MACRO 1 

編譯使用gcc

$ gcc -c test.c 
test.c:3:0: warning: "MACRO" redefined [enabled by default] 
test.c:1:0: note: this is the location of the previous definition 
+0

可惜的是,我正在使用專有的編譯器,爲舊的微控制器生成代碼,不顯示此警告。幸運的是仍然支持已棄用的#warning指令。謝謝! –