2017-09-15 53 views
1
#define MACRO 

int main() { 

#include MACRO 
} 

僞碼存在於上面。 我從命令行tsking像如何做#include宏,並從C++中的命令行取宏值

g++ -DMACRO="x.h" 

錯誤MACRO值顯示

#include expects "FILENAME" or <FILENAME> 
+1

您不需要定義宏,因爲這是'-DMACRO = ...'所做的。 – Chiel

+0

解決方案取決於您使用的shell(在unix版本下)或命令行處理器(例如windows下的CMD)。不同的命令行處理程序處理雙引號的方式不同,除非以某種方式轉義,否則不能在命令行上傳遞雙引號('「')字符 – Peter

+0

gcc預處理器還具有['-include file'選項](https ://gcc.gnu.org/onlinedocs/gcc-7.2.0/gcc/Preprocessor-Options.html#Preprocessor-Options)向編譯文件添加附加內容。 –

回答

2

問題是最有可能是你的命令的環境中刪除的參數中的雙引號,你需要以逃避報價:

$ g++ -DMACRO=\"x.h\" 
+2

另外,他可能不應該'#define MACRO '在編制單位。 – user694733

0

刪除#define MACRO, 這與您在命令行參數中定義的MACRO衝突。