私はCについての本を読んでいます。著者のコードのどこかで、関数プロトタイプの定義を見つけてから、同じ名前のマクロを見つけました。関数.h
または.c
ファイル。なぜ関数プロトタイプを定義し、同じ名前のプリプロセッサマクロを定義するのですか?
私はそのような何か意味:
int print_my_stufff(char *stuff);
#define print_my_stuff(A) (printf("%s\n", A))
/* and print-my-stuff() function never defined anywhere else */
コード作品を、彼は最初の場所で関数プロトタイプを必要となぜ私はちょうど得ることはありませんか?彼は単にマクロを書くことができませんでしたか?ポイントは何ですか?マクロは、int
または何を返す式に評価する必要があることをコンパイラに伝えるのでしょうか?プロトタイプを削除しても、動作が変更されないようです。著者はこれを説明しなかった。
おそらく、マクロを文書化することです。特に戻り値の型とパラメータの型。著者は、本のためだけにそれをしているかもしれないし、著者はそれが一般的に良い習慣であると考えるかもしれない。 – kaylum
私は実際には使用されたことは一度も見たことがないので、推測することができます:おそらくプロトタイプはマクロのパラメータタイプを文書化するためのものでしょうか? –
@kaylumそれでは、コメントを書いてみませんか? '// this macro does foo' – Arc676