2017-03-17 17 views
1

小さなプロジェクトをC++で作成し、imは_DEBUGの条件でのみ実行されるコードに部品を含めることになっています。コードは次のようになります。他のコンパイラで_DEBUG定義を使用してからVisual Studio

#ifdef _DEBUG 
//Debuging code area 
#endif 

Visual Studioでは、IDE内で[実行]または[デバッグ]をクリックするだけで、デフォルトでサポートされます。他の環境で同じ機能を使うには? Clion(Clangコンパイラ)でそれを行うのは可能でしょうか?どうやって?

+0

標準的なものは、デバッグを行わないためのNDEBUGです。これは 'assert'が使うものです。とにかく、コンパイラとIDEを使用して、必要なものを定義することができます。それに関する文書があるはずです。 – chris

答えて

2

より一般的に#defineは(NDEBUGが定義されている場合、すなわちassert()が無効になっている、reference hereを参照)、非デバッグビルドためNDEBUGあります。

Visual Studioプロジェクトでは、_DEBUGマルコはデフォルトでデバッグ対象に対して#定義されていますが、プロジェクトプロパティダイアログのプリプロセッサ定義の一覧から削除できます。他のプラットフォームで

、ただ単に-Dコマンドラインオプションを使用し、* nixのシステムでは、何らかの方法でコンパイラにはgccコンパイラの すなわちの#defineを渡す:

gcc -D _DEBUG .... 

reference here

この他のStackOverflow postでは、_DEBUGとNDEBUGの関連情報をご覧いただけます。

1

プラットフォーム間の互換性のためのソフトウェアを開発する場合、私は通常、_DEBUGの#defineをコンパイラ/ツールチェーンに明示的に渡すことを推奨します。

すなわち、

のMicrosoft Visual C++コンパイラはすでにそれをの#defineが、GCCのためのあなたは-Dコマンドラインオプションを使用して、それを渡すことができます:あなたが構築ツール(私がそうであるように)としてCMakeのを使用する場合は

gcc -D _DEBUG ... 

を、次のようにCMakeLists.txtファイルに簡単に追加することができます。

set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG") 
関連する問題