• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C言語の関数形式マクロの定義・呼び出し時の空白の挿入)

C言語の関数形式マクロの定義・呼び出し時の空白の挿入

このQ&Aのポイント
  • C言語で関数形式マクロを定義するときに、どこに空白(スペース)を入れてもよいのか、教えてください。
  • 関数形式マクロとは、引数付きマクロと言っている本もあるようで、例えば、#define mymul(x,y) ((x)*(y))こんなものです。
  • 呼び出す場合も、c=mymul(a,b)と呼び出す場合に、これらのどこに空白を入れてよいのか、よろしくお願いいたします。

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

  • ベストアンサー
  • leaz024
  • ベストアンサー率75% (398/526)
回答No.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 ※「空白」はタブも含みます。

noname#2004
質問者

お礼

>( があると、それに対応する ) が現れるまでは、勝手に分断されることはありません。 特にこのことが心配でした。 対応する括弧が現れるまでは大丈夫なんですね。 ありがとうございます。

関連するQ&A