- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C言語の関数形式マクロの定義・呼び出し時の空白の挿入)
C言語の関数形式マクロの定義・呼び出し時の空白の挿入
このQ&Aのポイント
- C言語で関数形式マクロを定義するときに、どこに空白(スペース)を入れてもよいのか、教えてください。
- 関数形式マクロとは、引数付きマクロと言っている本もあるようで、例えば、#define mymul(x,y) ((x)*(y))こんなものです。
- 呼び出す場合も、c=mymul(a,b)と呼び出す場合に、これらのどこに空白を入れてよいのか、よろしくお願いいたします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
空白を入れられないのは、mymul と ( の間だけです。 ( があると、それに対応する ) が現れるまでは、勝手に分断されることはありません。 入れられるところ全てに空白を入れると、 # define mymul( x , y ) ( ( x ) * ( y ) ) こんな感じになります。 ● # 前後の空白 古いC(K&Rのころ)ではダメでしたが、ANSI C 準拠のコンパイラではOKです。 これによって、#if のネストにインデントをつけることができます。 例: #if DEBUG # define ERROR(e) error(e) # else # define ERROR(e) # endif あるいは #if DEBUG #define ERROR(e) error(e) # else #define ERROR(e) # endif ※「空白」はタブも含みます。
お礼
>( があると、それに対応する ) が現れるまでは、勝手に分断されることはありません。 特にこのことが心配でした。 対応する括弧が現れるまでは大丈夫なんですね。 ありがとうございます。