次のコードがコンパイルされない理由がわかりません。
#include <iostream>
#define SHORT_NAME 4;
int func(int arg)
{
return arg;
}
int main()
{
return func(SHORT_NAME); // Error: expected a ')'
}
const int SHORT_NAME = 4
代わりに2行目で使用する必要がありますか?
次のコードがコンパイルされない理由がわかりません。
#include <iostream>
#define SHORT_NAME 4;
int func(int arg)
{
return arg;
}
int main()
{
return func(SHORT_NAME); // Error: expected a ')'
}
const int SHORT_NAME = 4
代わりに2行目で使用する必要がありますか?
SHORT_NAME
前処理後に次のように展開されるため、マクロからセミコロンを削除します。
return func(4;);
またはconst int
、質問で提案するように使用します。マクロとの説明については、「staticconst」と「#define」と「enum」を参照してくださいconst
。
プリプロセッサはMACRO名を展開します。したがって、この:
return func(SHORT_NAME);
これになります:
return func(4;);
それは間違いなく構文エラーですよね?
したがって、MACROを定義せずに定義すると、次の;
ように機能します。
#define SHORT_NAME 4 //without ;
代わりに、2行目でconst int SHORT_NAME = 4を使用する必要がありますか?
はい。頑張れ。とにかく、マクロは悪です(ほとんどの場合)。
定義にセミコロンは必要ありません。代わりにこれを書いてください
#define SHORT_NAME 4
ただし、const int
C ++を使用する場合は、使用する方が確実に適しています。