簡體   English   中英

有沒有一種方法可以通過編譯器的命令行添加代碼?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM