Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
声明中的C类型定义_C_Variable Declaration - Fatal编程技术网

声明中的C类型定义

声明中的C类型定义,c,variable-declaration,C,Variable Declaration,嗨,上述代码在函数“main”中给出了类似的错误: 第7行:错误:声明说明符中有两个或多个数据类型 但是,当第二行中相同的“a”被long替换时,它工作得非常好。 这个很好用 typedef长a; 外部长INTC; 请解释为什么会发生这种情况long int是一个类型名 type alias name type name被解析为两种类型,即使type alias name是long的别名,type name是int Atypedef不是宏 一旦你有了一个typedef你就不再有文本“int”了

嗨,上述代码在函数“main”中给出了类似
的错误:
第7行:错误:声明说明符中有两个或多个数据类型

但是,当第二行中相同的“a”被long替换时,它工作得非常好。 这个很好用

typedef长a;
外部长INTC;


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

long int
是一个类型名


type alias name type name
被解析为两种类型,即使
type alias name
long
的别名,
type name
int

A
typedef
不是宏


一旦你有了一个
typedef
你就不再有文本“int”了,它可以与文本“long”合并形成一个新的类型。它是它自己的一级类型,将与同一声明中的另一个类型冲突。

如您所见[here][1]long已经是一个类型[1]:,
long
被视为
long int
的缩写<代码>整数表示例如
长整数
typedef long a;
extern a int c;