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;
请解释为什么会发生这种情况
答案 0 :(得分:4)
long int
是类型名称。
type-alias-name type-name
是type-alias-name
的别名且long
为type-name
, int
也会被解析为两种类型。
答案 1 :(得分:3)
typedef
不是宏。
一旦你有typedef
,你就不再拥有文本" int"这可以与文本" long"合并制作新类型。它是它自己的第一类类型,它将与同一声明中的另一种类型冲突。