gpt4 book ai didi

c++ - 结构中的枚举 - C 与 C++

转载 作者:可可西里 更新时间:2023-11-01 18:26:31 26 4
gpt4 key购买 nike

我正在尝试在结构中使用枚举,这可以编译并与 gcc 一起正常工作。但是使用 g++ 编译时,相同的代码会抛出错误。

#include<stdio.h>
#include<stdlib.h>
struct foo
{
enum {MODE1, MODE2, MODE3} mode;
enum {TYPE1, TYPE2} type;
};
void bar(struct foo* bar)
{
bar->mode = MODE1;
}

int main()
{
struct foo* foo = (struct foo*) malloc(sizeof(struct foo));
bar(foo);
printf("mode=%d\n",foo->mode);
}

使用 gcc 获得的输出:

 $ gcc foo.c
$ ./a.out
mode=0

使用 g++ 获得的输出:

 $ g++ foo.c
foo.c: In function ‘void bar(foo*)’:
foo.c:11: error: ‘MODE1’ was not declared in this scope

最佳答案

MODE1foo的范围内,所以需要

bar->mode = foo::MODE1;

请注意,如果您想在没有作用域的情况下访问枚举类型,则需要这样声明它们。例如:

typedef enum {MODE1, MODE2, MODE3} MODE;
typedef enum {TYPE1, TYPE2} TYPE;

struct foo
{
MODE mode;
TYPE type;
};

关于c++ - 结构中的枚举 - C 与 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23462307/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com