prev up next   top/contents search

comp.lang.c FAQ list · Question 2.1

Q: What's the difference between these two declarations?

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

A: The first form declares a structure tag; the second declares a typedef. The main difference is that the second declaration is of a slightly more abstract type--its users don't necessarily know that it is a structure, and the keyword struct is not used when declaring instances of it:

	x2 b;

Structures declared with tags, on the other hand, must be defined with the

	struct x1 a;
form. [footnote]

(It's also possible to play it both ways:

	typedef struct x3 { ... } x3;
It's legal, if potentially obscure, to use the same name for both the tag and the typedef, since they live in separate namespaces. See question 1.29.)

prev up next   contents search
about this FAQ list   about eskimo   search   feedback   copyright

Hosted by Eskimo North