In C, is there a difference between writing "struct foo" instead of just "foo" if foo is a struct?
For example:
struct sockaddr_in sin;
struct sockaddr *sa;
// Are these two lines equivalent?
sa = (struct sockaddr*)&sin;
sa = (sockaddr*)&sin;
Thanks /Erik
In fact, in standard "C" it's required to specify struct
keyword. This is optional in C++.
This is the reason some people define structs like this:
typedef struct foo { ... } bar;
to be able to use bar
instead of struct foo
. However, some C compilers do not enforce this rule.
Yes. In C (as opposed to C++), structs are in their own namespace. So if you defined a
struct sockaddr { ... }
you may not use it as
sockaddr s;
sockaddr *ps;
In order to make that legal, you may use typedef in order to import into the non-struct namespace of type names:
typedef struct sockaddr { ... } sockaddr;
sockaddr s, *p;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With