例如,如果一個「設置」文件存在,並且有以下幾點:如何使#if預處理器以另一個不同文件中的值爲條件?
system,ubuntu
能預處理器#if
被用於定製的設置文件依據的值的代碼?例如:
#if lookup_system == "ubuntu" // loopup_system is pseudocode
另一用途可能是查找代碼是否已在生產服務器上運行。
例如,如果一個「設置」文件存在,並且有以下幾點:如何使#if預處理器以另一個不同文件中的值爲條件?
system,ubuntu
能預處理器#if
被用於定製的設置文件依據的值的代碼?例如:
#if lookup_system == "ubuntu" // loopup_system is pseudocode
另一用途可能是查找代碼是否已在生產服務器上運行。
你不能那樣做。
但是,您可能會從從外部數據生成一些頭文件。 autoconf實用程序會這樣做(實際上會生成一些生成此類標頭的configure
腳本)。
更一般地,你應該建立你的build automation系統(例如編輯Makefile
爲GNU make,或者您build.ninja
爲ninja)生成的頭文件合適(也許一個很小的腳本,自己的C++程序-another-,或隨你)。你也可以有一個聰明的編譯系統將特定的-D
flags傳遞給你的編譯器。
記住C++文件(包括頭文件如.hh
和實現文件例如.cc
...)可以通過別的來產生。這是常見的做法。
瞭解更多關於您的preprocessor,例如約cpp
。這是一個只編譯的東西。使用GCC,您可以使用命令such asg++ -C -E foo.cc > foo.ii
獲取foo.cc
文件的預處理表單foo.ii
。
這隻有在構建系統解析「settings」文件時纔有可能,構建系統在構建時添加了正確的宏。請記住,預處理器只是一個*編譯時*的事情。 –