#include <iostream.h>
#define mkr(a) {cout << a;\cout << b;\}
void main(void){
cout << "2数を表示するマクロ" << endl;
mkr(1,9);
}

↑これをコンパイルするとエラーになりました。

エラー 5行目
マクロ 'mkr' の呼び出しにおける引数の個数が
誤っている(関数 main() )

ネット上で見つけたものなんですが、このプログラムを
正しく修正するとどうなるんですか?
マクロのソースを見たのは初めてだったので分かりませんでした。

A 回答 (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++ コンパイラで確認済み)
    • good
    • 0
この回答へのお礼

ありがとうございます。

#include <iostream.h>
#define mkr(a,b) {cout << a;\
cout << b;\
}
void main(void){
cout << "2数を表示するマクロ" << endl;
mkr(1,9);
}

というのが正しかったのですね。
改行のために \ を用意したのに、改行されてなかったということで
エラーになっていたということが分かりました。

お礼日時:2001/03/14 23:21

 記号¥は、マクロ内において行と行をつなぐものです。


 1行ですべてを記述するのであれば必要ありません。
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/03/14 23:20

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でコンパイルできなかったんです。
マクロを知らないから \ というのが何なのかも分からないんです。

補足日時:2001/03/14 00:32
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング