2017-03-17 64 views
1

我用C++編寫一個小項目,我應該把代碼中的部分包含在只能在_DEBUG條件下運行的代碼中。代碼如下所示:在其他編譯器中使用_DEBUG定義,然後Visual Studio

#ifdef _DEBUG 
//Debuging code area 
#endif 

只需單擊IDE中的「運行」或「調試」,Visual Studio默認支持它。如何在其他環境中使用相同的功能?可以在Clion(Clang編譯器)中使用它嗎?怎麼樣?

+0

標準的NDEBUG是不需要調試的。你會發現這是'assert'使用的。無論如何,編譯器和IDE允許你定義任何你想要的。應該有文檔。 – chris

回答

2

一個更常見的#define是NDEBUG非調試版本(如果NDEBUG定義即assert()被禁用,見reference here)。

在Visual Studio項目中,_DEBUG marco默認爲#defined,用於調試目標,但是您可以從項目屬性對話框中的預處理器定義列表中將其刪除。

在其他平臺上,剛剛通過的#define以某種方式編譯器, 即對* nix系統gcc編譯器,只需使用-d命令行選項:

gcc -D _DEBUG .... 

reference here

你可以在這個其他的StackOverflow post找到更多關於_DEBUG vs NDEBUG的信息。

1

在開發用於跨平臺兼容性的軟件時,我通常更願意將_DEBUG的#define顯式傳遞給編譯器/工具鏈。

微軟的Visual C++編譯器已經#定義它,但對於GCC,您可以在使用-D命令行選項,通過即:

gcc -D _DEBUG ... 

如果您使用的CMake作爲構建工具(像我一樣),您可以更輕鬆地將其添加到您的CMakeLists.txt文件中:

set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG") 
相關問題