2017-10-10 74 views
0

例如,如果一個「設置」文件存在,並且有以下幾點:如何使#if預處理器以另一個不同文件中的值爲條件?

system,ubuntu

能預處理器#if被用於定製的設置文件依據的值的代碼?例如:

#if lookup_system == "ubuntu" // loopup_system is pseudocode

另一用途可能是查找代碼是否已在生產服務器上運行。

+2

這隻有在構建系統解析「settings」文件時纔有可能,構建系統在構建時添加了正確的宏。請記住,預處理器只是一個*編譯時*的事情。 –

回答

0

你不能那樣做。

但是,您可能會從從外部數據生成一些頭文件autoconf實用程序會這樣做(實際上會生成一些生成此類標頭的configure腳本)。

更一般地,你應該建立你的build automation系統(例如編輯MakefileGNU make,或者您build.ninjaninja)生成的頭文件合適(也許一個很小的腳本,自己的C++程序-another-,或隨你)。你也可以有一個聰明的編譯系統將特定的-D flags傳遞給你的編譯器。

記住C++文件(包括頭文件如.hh和實現文件例如.cc ...)可以通過別的來產生。這是常見的做法。

瞭解更多關於您的preprocessor,例如約cpp。這是一個只編譯的東西。使用GCC,您可以使用命令such as
g++ -C -E foo.cc > foo.ii獲取foo.cc文件的預處理表單foo.ii

相關問題