c/c++语言开发共享结构中的枚举 – C与C ++

我正在尝试在结构中使用枚举,这可以编译并与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 

    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与C ++相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/560376.html

      (0)
      上一篇 2021年1月27日
      下一篇 2021年1月27日

      精彩推荐