我正在尝试在结构中使用枚举,这可以编译并与gcc
。 但是使用g++
编译时相同的代码会引发错误。
#include #include 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=%dn",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
MODE1
在foo
的范围内,所以你需要
bar->mode = foo::MODE1;
请注意,如果要访问不带作用域的枚举类型,则需要声明它们。 例如:
typedef enum {MODE1, MODE2, MODE3} MODE; typedef enum {TYPE1, TYPE2} TYPE; struct foo { MODE mode; TYPE type; };
以上就是c/c++开发分享结构中的枚举 – C与C ++相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/560376.html