• ベストアンサー

#define 文

初歩的な質問ですが。 #define abc 50 // Comment というステートメントでは abc に 50 が define されるのでしょうか。50 // Comment を define したい場合はどうすればいいのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • hpsk
  • ベストアンサー率40% (48/119)
回答No.4

> #define 文の 2 項めはどこまでが 2 項めとみなされるのか 2項目、という表現が適切かどうかは置いといて、#define の範囲は、その行が終わるまで(改行文字が現れるまで)です。二行以上にわたる#define を書きたい場合は、行末にバックスラッシュを置きます。 #define aeqb(a,b) do { \ (a) = (b); \ } while(0); のように。 ただし、質問の例に関しては、プリプロセッサの処理において、#defineの処理よりコメントの処理が先に実行されるので、define結果にコメントを含めるということはできないのです。

tttt23
質問者

お礼

回答ありがとうございます。 >#defineの処理よりコメントの処理が先に実行される なるほど、理解できました。

その他の回答 (3)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

このことの目的はなんですか?

tttt23
質問者

補足

特に目的は無いのですが、#define 文の 2 項めはどこまでが 2 項めとみなされるのかとふと疑問に思ったので質問してみました。

  • hpsk
  • ベストアンサー率40% (48/119)
回答No.2

> // も含めて定義したければ、" " で囲む "50 // comment" という文字列を定義したいのであればそれでいいですが、 例えば x = abc + 4 ; と書くと、 + 4 の部分はコメントになるようにしたい、ということなら、そういうことはできません。

tttt23
質問者

お礼

回答ありがとうございます。 そうなのですか x = abc + 4 ; が展開されて、 x = 50 // comment + 4 ; とみなされるわけではないのですか。

回答No.1

普通は abc に 50 が定義されますね。 #define abc "50 // Comment" としたいのでしょうか?

tttt23
質問者

お礼

回答ありがとうございます。適当に改行されて質問が見にくくなってしまいましたが。 #define 文の中でも // 以下はコメントとみなされる。 // も含めて定義したければ、" " で囲む と言うことですね。