typedef long a;
extern a int c;
嗨上面的代碼中給出了類似In function 'main': Line 7: error: two or more data types in declaration specifiers
ç的typedef
但是當同樣的「A」在第二行是由長取代它工作完全正常的錯誤。 這工作完全正常
typedef long a; extern long int c;
請解釋爲什麼會發生這種情況
typedef long a;
extern a int c;
嗨上面的代碼中給出了類似In function 'main': Line 7: error: two or more data types in declaration specifiers
ç的typedef
但是當同樣的「A」在第二行是由長取代它工作完全正常的錯誤。 這工作完全正常
typedef long a; extern long int c;
請解釋爲什麼會發生這種情況
long int
是一個類型名。
type-alias-name type-name
被解析爲即使type-alias-name
爲long
和type-name
是int
別名兩種類型。
A typedef
不是宏。
一旦你有一個typedef
你不再有文本「INT」那正好可以與文字「長」作出新的類型合併。這是它自己的一流類型,它會在同一個聲明中與另一類型衝突。
正如你可以看到[點擊這裏] [1]長已經是一個類型 [1]:http://en.wikipedia.org/wiki/C_data_types –
,'long'被視爲'的縮寫長整型「。 「int」意味着例如「long int int」。 – BLUEPIXY