![](/img/trans.png)
[英]Can I pass a preprocessor definition to the resource compiler through the command line?
[英]is there a way to prepend code through the command line of a compiler?
假設我有這個:
int main() { return a; }
我想調用編譯器並進行編譯:
g++ a.cpp --PREPEND-CODE-FLAG="int a = 5;"
有沒有辦法做到這一點?
請注意,我知道我可以插入預處理器定義為a
通過命令行,但我在尋找一種方式來預先考慮真正的C ++代碼,當前轉換單元。
目前,我正在使用該代碼生成一個單獨的標頭,並將其包含在g ++ / clang的-I
標志中
您已經用與不同C ++實現有關的幾個標簽標記了這個問題,這表明您正在尋找一種跨平台的解決方案。 不存在。
該標准沒有規定翻譯單元如何傳遞給編譯器。 例如,它永遠不會假定翻譯單位是單個文件。 如果將g++
與標准外殼一起使用,則可以例如通過執行以下命令來組成翻譯單元:
{
echo 'int a = 5';
echo '#line 1 a.cpp'
cat a.cpp
} | g++ -Wall -x c++ -
可以在Unix平台上使用的大多數C ++編譯器都可以工作(有微小的變化),但是顯然不適合Windows平台。 也許其他事情會是。 但是,無論您使用哪種解決方案,都將針對您所處的環境進行個性化設計。
$ g++ -DPREPENDED_CODE="int a = 5;" nod.cpp
$ ./a.out
$ echo $?
5
$
其中nod.cpp是:
PREPENDED_CODE
int main()
{
return a;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.