「ポータブル」と「マクロ」という言葉がしばしば一緒にならないことは知っていますが、私のコードは通常、#ifdef _DEBUG
目的の結果を確認するタグ (私は VS2012 を使用) でいっぱいです。コードを Unix システムに移植できるようにしたいと考えています。
この投稿に基づく私の理解では、Visual Studio は を使用_DEBUG
し、C 標準は を使用しますNDEBUG
が、それらの機能は異なります (_DEBUG
フラグ デバッグ モード、NDEBUG
フラグ アサーション)。
コードを可能な限り移植可能にし#ifndef NDEBUG
たい場合、アサートがアクティブなときにのみそれらのコード行を実行したい場合に使用する必要がありますか? Visual Studio 内でこれがもたらす結果は何ですか? 動作しているように見えますが、不足しているものがないことを確認したいです。すなわち。_DEBUG
完全に優れたC標準の代替手段があるのに、なぜMicrosoftは使用するのでしょうか? 歴史的な理由?