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