我用C++編寫一個小項目,我應該把代碼中的部分包含在只能在_DEBUG條件下運行的代碼中。代碼如下所示:在其他編譯器中使用_DEBUG定義,然後Visual Studio
#ifdef _DEBUG
//Debuging code area
#endif
只需單擊IDE中的「運行」或「調試」,Visual Studio默認支持它。如何在其他環境中使用相同的功能?可以在Clion(Clang編譯器)中使用它嗎?怎麼樣?
我用C++編寫一個小項目,我應該把代碼中的部分包含在只能在_DEBUG條件下運行的代碼中。代碼如下所示:在其他編譯器中使用_DEBUG定義,然後Visual Studio
#ifdef _DEBUG
//Debuging code area
#endif
只需單擊IDE中的「運行」或「調試」,Visual Studio默認支持它。如何在其他環境中使用相同的功能?可以在Clion(Clang編譯器)中使用它嗎?怎麼樣?
一個更常見的#define是NDEBUG
非調試版本(如果NDEBUG
定義即assert()
被禁用,見reference here)。
在Visual Studio項目中,_DEBUG marco默認爲#defined,用於調試目標,但是您可以從項目屬性對話框中的預處理器定義列表中將其刪除。
在其他平臺上,剛剛通過的#define以某種方式編譯器, 即對* nix系統gcc編譯器,只需使用-d命令行選項:
gcc -D _DEBUG ....
你可以在這個其他的StackOverflow post找到更多關於_DEBUG vs NDEBUG的信息。
在開發用於跨平臺兼容性的軟件時,我通常更願意將_DEBUG的#define顯式傳遞給編譯器/工具鏈。
微軟的Visual C++編譯器已經#定義它,但對於GCC,您可以在使用-D命令行選項,通過即:
gcc -D _DEBUG ...
如果您使用的CMake作爲構建工具(像我一樣),您可以更輕鬆地將其添加到您的CMakeLists.txt文件中:
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG")
標準的NDEBUG是不需要調試的。你會發現這是'assert'使用的。無論如何,編譯器和IDE允許你定義任何你想要的。應該有文檔。 – chris