- ベストアンサー
#define 文
初歩的な質問ですが。 #define abc 50 // Comment というステートメントでは abc に 50 が define されるのでしょうか。50 // Comment を define したい場合はどうすればいいのでしょうか。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
> #define 文の 2 項めはどこまでが 2 項めとみなされるのか 2項目、という表現が適切かどうかは置いといて、#define の範囲は、その行が終わるまで(改行文字が現れるまで)です。二行以上にわたる#define を書きたい場合は、行末にバックスラッシュを置きます。 #define aeqb(a,b) do { \ (a) = (b); \ } while(0); のように。 ただし、質問の例に関しては、プリプロセッサの処理において、#defineの処理よりコメントの処理が先に実行されるので、define結果にコメントを含めるということはできないのです。
その他の回答 (3)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
このことの目的はなんですか?
補足
特に目的は無いのですが、#define 文の 2 項めはどこまでが 2 項めとみなされるのかとふと疑問に思ったので質問してみました。
- hpsk
- ベストアンサー率40% (48/119)
> // も含めて定義したければ、" " で囲む "50 // comment" という文字列を定義したいのであればそれでいいですが、 例えば x = abc + 4 ; と書くと、 + 4 の部分はコメントになるようにしたい、ということなら、そういうことはできません。
お礼
回答ありがとうございます。 そうなのですか x = abc + 4 ; が展開されて、 x = 50 // comment + 4 ; とみなされるわけではないのですか。
- JaritenCat
- ベストアンサー率37% (122/322)
普通は abc に 50 が定義されますね。 #define abc "50 // Comment" としたいのでしょうか?
お礼
回答ありがとうございます。適当に改行されて質問が見にくくなってしまいましたが。 #define 文の中でも // 以下はコメントとみなされる。 // も含めて定義したければ、" " で囲む と言うことですね。
お礼
回答ありがとうございます。 >#defineの処理よりコメントの処理が先に実行される なるほど、理解できました。