2

重複の可能性:
C プリプロセッサからメッセージを出力する移植可能な方法はありますか?

大規模なコード ベースをナビゲートする場合、定義されているものと定義されていないものを推測するのが難しい場合があります。したがって、コンパイル時に何かを出力したいと思います。例えば:

#ifdef SOME_DEFINE
// I want a preprocessor to print something here so that 
//  I can know whether SOME_DEFINE is defined or not
#endif

これはCで行うことができますか?
どこかで呼ばれるものを見た#error。多分それが私の唯一の選択肢ですか?

4

2 に答える 2

1

MS Visual C++ の場合:

#define __PRINT(str) __pragma(message(str))
于 2012-06-05T18:13:35.287 に答える
1

ディレクティブの素晴らしい点#errorは、サポートされていなくても機能することです!

サポートされている場合はコンパイラが通知"error: #error"し、サポートされていない場合はコンパイラが通知します"invalid preprocessing directive"。いずれにせよ、これは致命的なエラーであり、コンパイルは停止し、コンパイラは問題のある行がどれかを教えてくれます。

于 2012-06-05T19:02:59.957 に答える