从 C 中的函数返回枚举?

发布于 2024-07-17 03:47:12 字数 219 浏览 6 评论 0原文

如果头文件中有类似以下内容,如何声明返回 Foo 类型枚举的函数?

enum Foo
{
   BAR,
   BAZ
};

我可以做类似下面的事情吗?

Foo testFunc()
{
    return Foo.BAR;
}

或者我需要使用 typedef 或指针之类的吗?

If I have something like the following in a header file, how do I declare a function that returns an enum of type Foo?

enum Foo
{
   BAR,
   BAZ
};

Can I just do something like the following?

Foo testFunc()
{
    return Foo.BAR;
}

Or do I need to use typedefs or pointers or something?

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

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

发布评论

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

评论(4

多彩岁月 2024-07-24 03:47:12

在 C++ 中,您可以只使用 Foo

在 C 中,您必须使用 enum Foo,直到您为其提供 typedef。

然后,当您引用 BAR 时,您不会使用 Foo.BAR,而只是使用 BAR。 所有枚举常量共享相同的命名空间(“普通标识符”命名空间,由函数、变量等使用)。

因此(对于 C):

enum Foo { BAR, BAZ };

enum Foo testFunc(void)
{
    return BAR;
}

或者,使用 typedef

typedef enum Foo { BAR, BAZ } Foo;

Foo testFunc(void)
{
    return BAR;
}

In C++, you could use just Foo.

In C, you must use enum Foo until you provide a typedef for it.

And then, when you refer to BAR, you do not use Foo.BAR but just BAR. All enumeration constants share the same namespace (the “ordinary identifiers” namespace, used by functions, variables, etc).

Hence (for C):

enum Foo { BAR, BAZ };

enum Foo testFunc(void)
{
    return BAR;
}

Or, with a typedef:

typedef enum Foo { BAR, BAZ } Foo;

Foo testFunc(void)
{
    return BAR;
}
不醒的梦 2024-07-24 03:47:12

我相信 enum 中的各个值本身就是标识符,只需使用:

enum Foo testFunc(){
  return BAR;
}

I believe that the individual values in the enum are identifiers in their own right, just use:

enum Foo testFunc(){
  return BAR;
}
嘿看小鸭子会跑 2024-07-24 03:47:12

我认为有些编译器可能需要

typedef enum tagFoo
{
  BAR,
  BAZ,
} Foo;

I think some compilers may require

typedef enum tagFoo
{
  BAR,
  BAZ,
} Foo;
小…楫夜泊 2024-07-24 03:47:12
enum Foo
{
   BAR,
   BAZ
};

在 C 中,返回类型前面应该有 enum。 当您使用各个枚举值时,您不会以任何方式限定它们。

enum Foo testFunc()
{
    enum Foo temp = BAR;
    temp = BAZ;
    return temp;
}
enum Foo
{
   BAR,
   BAZ
};

In C, the return type should have enum before it. And when you use the individual enum values, you don't qualify them in any way.

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