aru*_*zhi 7 c c++ enums gcc struct
我正在尝试在结构中使用Enums,这可以编译并且可以正常工作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);
}
Run Code Online (Sandbox Code Playgroud)
获得的输出gcc:
$ gcc foo.c
$ ./a.out
mode=0
Run Code Online (Sandbox Code Playgroud)
获得的输出g++:
$ g++ foo.c
foo.c: In function ‘void bar(foo*)’:
foo.c:11: error: ‘MODE1’ was not declared in this scope
Run Code Online (Sandbox Code Playgroud)
jua*_*nza 11
MODE1是在你的范围内foo,所以你需要
bar->mode = foo::MODE1;
Run Code Online (Sandbox Code Playgroud)
请注意,如果要访问没有范围的枚举类型,则需要声明它们.例如:
typedef enum {MODE1, MODE2, MODE3} MODE;
typedef enum {TYPE1, TYPE2} TYPE;
struct foo
{
MODE mode;
TYPE type;
};
Run Code Online (Sandbox Code Playgroud)