#include<conio.h>
#include<stdio.h>
#define abc 7
int main()
{
int abc=1;
printf("%d",abc);
getch();
return 0;
}
为什么这个程序会给出编译时错误
答案 0 :(得分:3)
您指定的7=1
无效。由于您已将abc
定义为7,因此预处理器会转换行:
int abc=1;
为:
int 7=1;
C中的语法错误(我的gcc
在数字常量之前说语法错误)。
答案 1 :(得分:2)
您将abc
定义为7
。
然后int abc=1
转化为int 7=1
这是荒谬的。
为什么你这样做?
答案 2 :(得分:2)
您将“abc”宏值声明为7。 所以如果再次包含宏名称为 变量,它会给出错误。
考虑以下
abc值是7.所以它会被处理掉 因为7 = 1。所以它会给出错误。
答案 3 :(得分:0)
C预处理器用abc
盲目替换7
导致:
int 7=1;
这显然是一个错误。
答案 4 :(得分:0)
当预处理器用abc
替换7
时,以下行变为无效:
int 7=1;
C中的标识符不能只是一个数字。