#include<conio.h>
#include<stdio.h>
#define abc 7
int main()
{
int abc=1;
printf("%d",abc);
getch();
return 0;
}
爲什麼這個節目是給編譯時錯誤符號常量
#include<conio.h>
#include<stdio.h>
#define abc 7
int main()
{
int abc=1;
printf("%d",abc);
getch();
return 0;
}
爲什麼這個節目是給編譯時錯誤符號常量
你分配7=1
這是無效的。既然你已經定義abc
爲7,預處理器行:
int abc=1;
到:
int 7=1;
這是C(語法錯誤我gcc
說之前的數字常量語法錯誤)。
C預處理器的確具有7
盲更換abc
導致:
int 7=1;
這顯然是錯誤的。
當預處理程序替換abc
與7
,以下行變爲無效:
int 7=1;
用C的標識符,不能只是一個數字。
您將abc
定義爲7
。
然後int abc=1
被轉換成荒謬的int 7=1
。
爲什麼你這樣做?
您聲明「abc」宏值爲7。 因此,如果再次包含宏名稱爲 變量,則會發生錯誤。
考慮以下
ABC值爲7。因此,這將處理 爲7 = 1。所以它會給出錯誤。
*什麼*編譯錯誤? – 2010-03-20 09:52:54