区别于;结构foo*”;及;foo*”;其中foo是一个struct?
在C语言中,如果foo是一个结构,那么编写“structfoo”而不仅仅是“foo”有什么区别吗 例如:区别于;结构foo*”;及;foo*”;其中foo是一个struct?,c,struct,typedef,C,Struct,Typedef,在C语言中,如果foo是一个结构,那么编写“structfoo”而不仅仅是“foo”有什么区别吗 例如: struct sockaddr_in sin; struct sockaddr *sa; // Are these two lines equivalent? sa = (struct sockaddr*)&sin; sa = (sockaddr*)&sin; 谢谢/Erik事实上,在标准“C”中需要指定struct关键字。在C++中是可选的。 这就是为什么有些人这样定义
struct sockaddr_in sin;
struct sockaddr *sa;
// Are these two lines equivalent?
sa = (struct sockaddr*)&sin;
sa = (sockaddr*)&sin;
谢谢/Erik事实上,在标准“C”中需要指定struct
关键字。在C++中是可选的。
这就是为什么有些人这样定义结构:
typedef struct foo { ... } bar;
能够使用bar
而不是struct foo
。但是,有些C编译器不强制执行此规则。如果键入定义,可以只使用“foo”。是。在C(与C++相反)中,结构位于它们自己的名称空间中。所以如果你定义了一个
struct sockaddr { ... }
你不可以把它当作
sockaddr s;
sockaddr *ps;
为了使其合法化,您可以使用typedef导入类型名称的非结构命名空间:
typedef struct sockaddr { ... } sockaddr;
sockaddr s, *p;
这取决于结构的定义方式。如果它是用typedef定义的,你不必把stuct关键字放在前面
typedef struct
{
//
} aStruct;
aStruct abc;
但如果不是typedef,则需要struct关键字
struct aStruct
{
//
} ;
struct aStruct abc;