- ベストアンサー
マクロ初級 #define
#include <iostream.h> #define mkr(a) {cout << a;\cout << b;\} void main(void){ cout << "2数を表示するマクロ" << endl; mkr(1,9); } ↑これをコンパイルするとエラーになりました。 エラー 5行目 マクロ 'mkr' の呼び出しにおける引数の個数が 誤っている(関数 main() ) ネット上で見つけたものなんですが、このプログラムを 正しく修正するとどうなるんですか? マクロのソースを見たのは初めてだったので分かりませんでした。
- みんなの回答 (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++ コンパイラで確認済み)
その他の回答 (2)
記号¥は、マクロ内において行と行をつなぐものです。 1行ですべてを記述するのであれば必要ありません。
お礼
ありがとうございます。 \ の意味が分かりました。
- madman
- ベストアンサー率24% (612/2465)
2行目の #define mkr(a) {cout << a;\cout << b;\} を #define mkr(a,b) {cout << a;\cout << b;\} と置き換えてください。 ネット上の情報が全て正しいわけではありませんので、ご注意ください。
補足
情報ありがとうございます。 #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でコンパイルできなかったんです。 マクロを知らないから \ というのが何なのかも分からないんです。
お礼
ありがとうございます。 #include <iostream.h> #define mkr(a,b) {cout << a;\ cout << b;\ } void main(void){ cout << "2数を表示するマクロ" << endl; mkr(1,9); } というのが正しかったのですね。 改行のために \ を用意したのに、改行されてなかったということで エラーになっていたということが分かりました。