有沒有辦法從GCC預處理器中檢索預定義的宏而不必使用臨時文件(例如使用管道)?從GCC獲取沒有臨時文件的預定義宏
StackOverflow中存在類似的問題,但其所有答案都使用命令行,而我需要從過程中讀取所提到的數據。 GCC dump preprocessor defines
谷歌基本上返回了很多問題的命令行版本的答案。
當我試圖執行在Windows上使用管道在Linux或NUL輸出定向到/ dev/null的命令行招:
RunAndGetOutput("cpp -dM -E < NUL");
...發生錯誤:
cpp.exe: error: <: Invalid argument
cpp.exe: warning: '-x c' last input file has no effect
cpp.exe: fatal error: no input files
compilation terminated.
當我從命令行執行相同的命令時,一切正常,並且定義了它的打印列表。
有什麼辦法可以解決這個問題嗎?
這聽起來像你需要一個命名管道。查找CreateNamedPipe(Windows)或mkfifo(POSIX)。這樣你就可以得到一個特殊的文件名,你可以把它作爲輸出文件傳遞給GCC。令人討厭的位通常基於PID命名。 – doynax
RunAndGetOutput不解釋shell元字符,所以gcc在命令行上看到一個'<',並且不知道這意味着什麼。 –