次のようなことができるようになりたい
#print "C Preprocessor got here!"
デバッグ用。これを行うための最良/最も移植性の高い方法は何ですか?
warning
ディレクティブはおそらく最も近いものですが、完全にプラットフォームに依存しているわけではありません。
#warning "C Preprocessor got here!"
知る限り、これはpragma
ディレクティブを使用する必要があるMSVCを除くほとんどのコンパイラで機能します。
#pragma message ( "C Preprocessor got here!" )
以下は [〜#〜] msvc [〜#〜] 、および [〜#〜] gcc [〜#〜] でサポートされています。
#pragma message("stuff")
#pragma message "stuff"
Clangは最近サポートを追加し始めました。詳細は here をご覧ください。
試してみてください:#pragma message("Hello World!")
ほとんどのCコンパイラは#warning
ディレクティブを認識するため、
#warning "Got here"
標準の '#error'ディレクティブもあります。
#error "Got here"
すべてのコンパイラーがサポートしていますが、コンパイル/プリプロセスも停止します。
#pragma message("foo")
よく働く。また、-Werrorを使用してもコンパイルは停止しません。
別の解決策は、コメントとシェルスクリプトを使用してそれらを処理することです。これにはある程度の規律が必要です(またはタイプミスを検出するシェルスクリプト)。
たとえば、_//TODO
_という形式のコメントを追加してから、それらすべてをレポートに収集するシェルスクリプトを追加します。
より複雑なユースケースについては、独自の単純なプリプロセッサを作成してみてください。たとえば、ソースを_*.c2
_ファイルとして編集できます。単純なプリプロセッサはソースを読み取り、_//TODO
_を探し、printf("TODO ...")
を出力_*.c
_ファイルに書き込みます。