簡體   English   中英

結構中的枚舉 - C與C ++

[英]Enumerations within a struct - C vs C++

我正在嘗試在結構中使用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);
}

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;
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM