次の C コードを書きました。
#define MAX_T(a,b,d) \
{ int len = (d);printf("len %d", len);}
int main()
{
//MAX_T(10,30, smgarbage)
MAX_T(10,30, len)
}
コメントアウトしMAX_T(10,30, smgarbage)
て実行すると、出力されますlen 24
。コメントアウトしMAX_T(10,30, len)
て実行するMAX_T(10,30, smgarbage)
と、次のコンパイラ エラーが発生します。
test.c: In function 'main':
test.c:34: error: 'smgarbage' undeclared (first use in this function)
test.c:34: error: (Each undeclared identifier is reported only once
test.c:34: error: for each function it appears in.)
実行時にMAX_T(10,30, len)
コンパイラエラーが発生しないのはなぜですか? ステートメントはint len = (d);
これを引き起こしていますか?どのように?