2010-03-20 56 views
0
#include<conio.h> 
#include<stdio.h> 
#define abc 7 

int main() 
{ 

int abc=1; 

printf("%d",abc); 

getch(); 

return 0; 
} 

爲什麼這個節目是給編譯時錯誤符號常量

+2

*什麼*編譯錯誤? – 2010-03-20 09:52:54

回答

3

你分配7=1這是無效的。既然你已經定義abc爲7,預處理器行:

int abc=1; 

到:

int 7=1; 

這是C(語法錯誤我gcc說之前的數字常量語法錯誤)。

0

C預處理器的確具有7盲更換abc導致:

int 7=1; 

這顯然是錯誤的。

0

當預處理程序替換abc7,以下行變爲無效:

int 7=1; 

用C的標識符,不能只是一個數字。

2

您將abc定義爲7

然後int abc=1被轉換成荒謬的int 7=1

爲什麼你這樣做?

2

您聲明「abc」宏值爲7。 因此,如果再次包含宏名稱爲 變量,則會發生錯誤。

考慮以下

ABC值爲7。因此,這將處理 爲7 = 1。所以它會給出錯誤。