• ベストアンサー

マクロ初級 #define

#include <iostream.h> #define mkr(a) {cout << a;\cout << b;\} void main(void){ cout << "2数を表示するマクロ" << endl; mkr(1,9); } ↑これをコンパイルするとエラーになりました。 エラー 5行目 マクロ 'mkr' の呼び出しにおける引数の個数が 誤っている(関数 main() ) ネット上で見つけたものなんですが、このプログラムを 正しく修正するとどうなるんですか? マクロのソースを見たのは初めてだったので分かりませんでした。

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

  • ベストアンサー
  • kokucho81
  • ベストアンサー率61% (157/255)
回答No.3

ようするに #include <iostream.h> #define mkr(a,b) {cout << a;cout << b;} void main(void){ cout << "2数を表示するマクロ" << endl; mkr(1,9); } こうするか、 #include <iostream.h> #define mkr(a,b) {cout << a;\ cout << b;\ } void main(void){ cout << "2数を表示するマクロ" << endl; mkr(1,9); } こうするかです。 マクロの各行の一番尻や、" "で囲まれた途中の文字列の尻に \ を入れると、改行してるけれど、続けます、と言った意味合いがあります。 例えば、 #include <iostream.h> #define mkr(a,b) {cout << a;\ cout << b;\ } void main(void){ cout << "2数を表\ 示\ す\ る\ マ\ ク\ ロ" << endl; mkr(1,9); } といった記述もできます。 一般的には非常に長いマクロや、長い文章を記述する場合に、ソースコード上の見た目を見やすくするために使います。 (各ソースコードはBorland C++ コンパイラで確認済み)

A__
質問者

お礼

ありがとうございます。 #include <iostream.h> #define mkr(a,b) {cout << a;\ cout << b;\ } void main(void){ cout << "2数を表示するマクロ" << endl; mkr(1,9); } というのが正しかったのですね。 改行のために \ を用意したのに、改行されてなかったということで エラーになっていたということが分かりました。

その他の回答 (2)

noname#25358
noname#25358
回答No.2

 記号¥は、マクロ内において行と行をつなぐものです。  1行ですべてを記述するのであれば必要ありません。

A__
質問者

お礼

ありがとうございます。 \ の意味が分かりました。

  • madman
  • ベストアンサー率24% (612/2465)
回答No.1

2行目の #define mkr(a) {cout << a;\cout << b;\} を #define mkr(a,b) {cout << a;\cout << b;\} と置き換えてください。 ネット上の情報が全て正しいわけではありませんので、ご注意ください。

A__
質問者

補足

情報ありがとうございます。 #include <iostream.h> #define mkr(a,b) {cout << a;\cout << b;\} void main(void){ cout << "2数を表示するマクロ" << endl; mkr(1,9); } コンパイルエラー E2206 test.cpp 5: 不正な文字 '\' (0x5c)(関数 main() ) コンパイルエラー E2206 test.cpp 5: 不正な文字 '\' (0x5c)(関数 main() ) 俺も mkr(a) を mkr(a,b) にすればいいと思ったんだけど bcc5.5でコンパイルできなかったんです。 マクロを知らないから \ というのが何なのかも分からないんです。

関連するQ&A