当我做
之类的事情时typedef long a;
extern a int c;
它给了我错误:two or more data types in declaration specifiers
。为什么?
修改
typedef long a;
extern a c;
工作正常。为什么不在上面?
答案 0 :(得分:12)
这是一个typedef,而不是一个宏。编译器看不到extern long int c
,它看到extern a int c
,其中包含两种不同的类型(a
和int
)。
答案 1 :(得分:8)
因为当你typedef
时,它变成了自己的全新类型。它现在不能用作修饰语。
答案 2 :(得分:0)
a已经很长了。你说有一个long int类型,叫做。
请参阅http://tigcc.ticalc.org/doc/keywords.html#short隐含的int有多长
答案 3 :(得分:-2)
Lsiebert给出了正确的答案。从声明中省略基类型时,假定为int。所以,long = long int。当您声明“extern a int c”时,编译器会将其转换为“extern long int int c”。这将导致错误。