typedef struct 和 enum,为什么?

发布于 2024-10-20 04:36:04 字数 606 浏览 1 评论 0原文

可能的重复:
C++ 中结构体 typedef 结构体的用途
typedef 结构与结构定义

在我维护的代码中,我经常看到以下内容

typedef enum { blah, blah } Foo;
typedef struct { blah blah } Bar;

: of:

enum Foo { blah, blah };
struct Bar { blah blah };

我一直用后者,这是我第一次看到前者。所以问题是为什么人们会使用一种风格而不是另一种风格。有什么好处吗?它们的功能也相同吗?我相信他们是,但不是 100% 确定。

Possible Duplicates:
Purpose of struct, typedef struct, in C++
typedef struct vs struct definitions

In code that I am maintaining I often see the following:

typedef enum { blah, blah } Foo;
typedef struct { blah blah } Bar;

Instead of:

enum Foo { blah, blah };
struct Bar { blah blah };

I always use the latter, and this is the first time I am seeing the former. So the question is why would one use one style over the other. Any benefits? Also are they functionally identical? I believe they are but am not 100% sure.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

迷乱花海 2024-10-27 04:36:04

在 C++ 中这并不重要。

在 C 中,structenumunion 位于不同的“命名空间”中,这意味着它们的名称可能与变量名称冲突。如果您说

struct S { };

So,您可以这样说

struct S S;

,这意味着 struct S 是数据类型,S 是变量名称。 你不能在 C 中说

S myStruct;

如果 S 是一个 struct (而不是类型名称), ,所以人们只是使用 typedef 来避免说 <代码>结构始终。

In C++ this doesn't matter.

In C, structs, enums, and unions were in a different "namespace", meaning that their names could conflict with variable names. If you say

struct S { };

So you could say something like

struct S S;

and that would mean that struct S is the data type, and S is the variable name. You couldn't say

S myStruct;

in C if S was a struct (and not a type name), so people just used typedef to avoid saying struct all the time.

遮云壑 2024-10-27 04:36:04

它们是为了 C 兼容性。 A 法线

  struct Bar { blah, blah };

与 C 的作用不同;

They are for C compatability. A normal

  struct Bar { blah, blah };

doesn't work the same with C;

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文