我正在嘗試用未定義的宏定義&兩次編譯源代碼。因此,對於默認的宏未定義&我想通過從Makefile的參數來定義該宏,就像如何將宏定義從Makefile傳遞到頭文件?
$(MAKE) -c $(present_dir)/new_dir -DONE_MACRO=1
,所以我用這個ONE_MACRO
在file.h
我。 這個定義如何反映並知道預處理器。這裏我使用cygmake
。如何通過MACRO as argument to compiler
和cygmake工具。
file.h: -
#if ONE_MACRO
#define some_targets
#else
#define other_targets
#endif
所以這ONE_MACRO是如何從make文件中定義,即時通訊試圖通過宏作爲參數,如下
的Makefile: -
MY_TARGET:
$(MAKE) -C $(present_dir)/target_dir -D ONE_MACRO=1 $(MAKECMDGOALS)
你的問題不清楚。 [This](http://www.cplusplus.com/doc/tutorial/preprocessor/)顯示瞭如何在'file.h'中使用'#ifdef'。這是否回答你的問題? – Beta
目前尚不清楚你在問什麼。編譯器處理'-D MACRO_DEFINE = 1'參數(通常在選項字母「D」和值「MACRO_DEFINE = 1」之間沒有空格),就好像有一行代碼讀取了「#define MACRO_DEFINE 1」 。這是在處理任何實際代碼之前設置的。這很簡單,所以它可能不是你要問的 - 但不清楚你在問什麼。 –
我想將一個**宏從Makefile作爲參數傳遞給編譯器**,這個宏在'file.h'.so編譯時使用,我會根據宏編譯兩次'file.h' **根據定義和未定義**。我現在認爲它很清楚。 – Kumar2080