可能重复:
struct,typedef struct的目的,在C++
typedef struct vs struct definitions中
在我维护的代码中,我经常看到以下内容:
typedef enum { blah, blah } Foo;
typedef struct { blah blah } Bar;
Run Code Online (Sandbox Code Playgroud)
代替:
enum Foo { blah, blah };
struct Bar { blah blah };
Run Code Online (Sandbox Code Playgroud)
我总是使用后者,这是我第一次看到前者.所以问题是为什么一个人使用一种风格而不是另一种风格.有什么好处?它们在功能上是否相同?我相信他们但并非100%肯定.
在C++中,这无关紧要.
在C中,struct
s,enum
s和union
s位于不同的"名称空间"中,这意味着它们的名称可能与变量名称冲突.如果你说
struct S { };
Run Code Online (Sandbox Code Playgroud)
所以你可以这样说
struct S S;
Run Code Online (Sandbox Code Playgroud)
这意味着它struct S
是数据类型,并且S
是变量名称.你不能说
S myStruct;
Run Code Online (Sandbox Code Playgroud)
在C中,如果S
是struct
(而不是类型名称),所以人们过去常常typedef
一直避免说话struct
.
归档时间: |
|
查看次数: |
3268 次 |
最近记录: |