1

我遇到的技術困難預處理指令:預處理程序指令沒有任何效果

#ifdef, #define 

我有一個Makefile建立了一個程序,我有2所選擇的2構建它:獨立或嵌入式。
我不喜歡的東西:

#ifdef _mdimode_ 
    //code for embedded 
#else 
    //code for standalone (default) 
#endif 

在我的主文件,當我在嵌入式目的編譯我寫了:

#define _mdimode_ 

但似乎G ++不識別或理解它。它總是進入其他地方,並且永遠不會編譯嵌入式版本的代碼。

的相關信息:
GNU請3.82
克++(GCC)4.6.1 20110908(紅帽4.6.1-9)
文件後綴:.C

回答

1

這有點猜測的沒有更多的信息。我假設代碼與主文件不在同一個文件中。如果是這樣,則#define不會傳播到該項目的該部分。您必須將其設置在包含代碼的文件中,或者在其中包含#include d的標頭中。

您還可以選擇設置在編譯命令選項的#define

g++ -c -D_mdimode_ mycode.C