当我做类似的事情时
typedef long a;
extern a int c;
它给了我错误:。two or more data types in declaration specifiers
为什么?
编辑
typedef long a;
extern a c;
工作正常。那么为什么不在上面呢?
当我做类似的事情时
typedef long a;
extern a int c;
它给了我错误:。two or more data types in declaration specifiers
为什么?
编辑
typedef long a;
extern a c;
工作正常。那么为什么不在上面呢?
它是 typedef,而不是宏。编译器看不到extern long int c
,它看到extern a int c
,其中包含两种不同的类型(a
和int
)。
因为当你typedef
的东西变成它自己的、全新的类型时。它现在不能用作修饰符。
a 已经是一个长整数。您是说有一种类型是 long int,称为 a。
有关隐含 int 的长度,请参见http://tigcc.ticalc.org/doc/keywords.html#short
Lsiebert 给出了正确的答案。当声明中省略基类型时,假定为 int。所以,long = long int。当您声明“extern a int c”时,编译器会将其转换为“extern long int int c”。这将导致错误。