声明中的C typedef

时间:2014-07-17 10:27:54

标签: c variable-declaration

typedef long a;
extern a int c;

您好上面的代码会出现In function 'main': Line 7: error: two or more data types in declaration specifiers

等错误

但是当相同的' a'在第二行被替换为long它完全正常。 这非常好用

typedef long a; extern long int c;

请解释为什么会发生这种情况

2 个答案:

答案 0 :(得分:4)

long int是类型名称。

即使type-alias-name type-nametype-alias-name的别名且longtype-name

int也会被解析为两种类型。

答案 1 :(得分:3)

typedef不是宏。

一旦你有typedef,你就不再拥有文本" int"这可以与文本" long"合并制作新类型。它是它自己的第一类类型,它将与同一声明中的另一种类型冲突。