Cコンパイラでのdebug-mode-compilationの標準仕様(ANSI / C89 / C99)による事前定義されたフラグはありますか?
私は知っDEBUG
ていてNDEBUG
フラグを立てていますが、それらがC標準に含まれているかどうかはわかりません。
Cコンパイラでのdebug-mode-compilationの標準仕様(ANSI / C89 / C99)による事前定義されたフラグはありますか?
私は知っDEBUG
ていてNDEBUG
フラグを立てていますが、それらがC標準に含まれているかどうかはわかりません。
いいえ-定義されているかどうかは、何が拡張さNDEBUG
れるかを決定するために標準で使用されますが、何が定義されるのかについては何もありません。assert
少なくとも私の記憶では、名前が付けられたものについては何もありませんDEBUG
。
それは、「デバッグモードのコンパイル」と呼ぶものに本当に依存します。それは、人によってさまざまなことを意味します。
assert
関数の使い方はNDEBUG
弾丸 #3 のみを制御します。もちろん、一緒に使うと意味があるので、他のものと組み合わせることもよくあります。しかし、これらすべてを強制的に使用する必要はありません。たとえば、アサート チェックを使用した最適化されたビルドなど、これらのもののさまざまな組み合わせを定義できます。