prev up next   top/contents search

comp.lang.c FAQ 列表· 问题 2.1

Q这两个声明有什么区别?

	struct x1 { ... };
	typedef struct { ... } x2;


A第一种形式声明一个 结构标签;第二种声明一个 typedef。主要区别在于第二种声明是一种更抽象的类型——它的用户不一定知道它是一个结构,并且在声明它的实例时不需要使用关键字struct

	x2 b;

另一方面,用标签声明的结构必须用

	struct x1 a;
形式定义。[脚注]

(也可以两者兼顾

	typedef struct x3 { ... } x3;
如果标签和 typedef 使用相同的名称,这是合法的,尽管可能晦涩难懂,因为它们存在于单独的命名空间中。请参阅问题 1.29。)


prev up next   contents search
关于此 FAQ 列表   关于 Eskimo   搜索   反馈   版权

Eskimo North 托管