0

Cコンパイラでのdebug-mode-compilationの標準仕様(ANSI / C89 / C99)による事前定義されたフラグはありますか?

私は知っDEBUGていてNDEBUGフラグを立てていますが、それらがC標準に含まれているかどうかはわかりません。

4

2 に答える 2

3

いいえ-定義されているかどうかは、何が拡張さNDEBUGれるかを決定するために標準で使用されますが、何が定義されるのかについては何もありません。assert少なくとも私の記憶では、名前が付けられたものについては何もありませんDEBUG

于 2011-06-16T04:52:16.587 に答える
3

それは、「デバッグモードのコンパイル」と呼ぶものに本当に依存します。それは、人によってさまざまなことを意味します。

  1. 最適化がないため、コードをより簡単にデバッグできます
  2. デバッガーを支援するために、シンボル生成をデバッグします。
  3. assert関数の使い方
  4. 追加の実行時チェックを行うデバッグ ライブラリを使用してコンパイルする
  5. 他のカスタム デバッグ手法の使用

NDEBUG弾丸 #3 のみを制御します。もちろん、一緒に使うと意味があるので、他のものと組み合わせることもよくあります。しかし、これらすべてを強制的に使用する必要はありません。たとえば、アサート チェックを使用した最適化されたビルドなど、これらのもののさまざまな組み合わせを定義できます。

于 2011-06-16T07:40:57.853 に答える