C语言enum枚举类型可以嵌套使用吗

C语言enum枚举类型可以嵌套使用吗?
比如:
enum OP {+, -, *, /};
enum symbol {NUM, OP, EQ,OTHER};

enum 枚举类型本身不支持嵌套定义。也就是说,不能在一个 enum 中嵌套定义另一个 enum。

但是你可以通过在一个结构体中定义 enum 枚举类型,来实现类似嵌套的效果。例如

struct Token {
    enum TokenType {
        NUMBER,
        OPERATOR,
        EQUALS,
        OTHER
    } type;
    union {
        int number;
        char operator;
    } value;
};


不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7805578
  • 这篇博客你也可以参考下:C-enum枚举类型
  • 除此之外, 这篇博客: C语言中enum的定义与用法中的 用法 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    一、一次定义多个常量。
    比如说我们的程序中处理问题时与星期几有关,可能要将星期一转换为数字1,星期二转换为数字2,一直到数字7,在不用enum关键字的情况下,可以使用define来定义,但是大家会觉得很麻烦,因为你要一个一个的定义,星期的还好说,只有7天,如果是月份呢,一年有12个月份,那就要写12个define,非常的不方面,如果利用enum的话就会非常的方便。

    #include<stdio.h>
     
    enum week {Mon=1,Tue,Wed,Thu,Fri,Sat,Sun};
     
    int main()
    {
        printf("%d",Tue);
        return 0;
    }
    

    二、限定变量的范围
    比如我们的应用程序中要处理有关月份的东西,显然月份只能取1-12中的某个数字,为了保证程序的正确性和健壮性,我们应该使用enum。

    #include<stdio.h>
     
    enum Month {Jan=1,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,dec};
     
    int main()
    {
        enum Month a =  Feb;
        printf("%d",a);
        return 0;
    }
    

    比如像这样,定义的枚举类型 a 的取值只能是那12个变量中的一个,如果赋予了其他的变量,编译器就会报错。error: conflicting types for ‘a’
    关于变量的声明(其实与结构体类似)

    1. 在定义enum的同时,声明变量:
    enum Month {Jan=1,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,dec} a,b;
    
    1. 定义完enum之后再声明变量:
    enum Month {Jan=1,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,dec};
    enum Month a =  Feb;
    

    3.定义匿名的枚举变量
    这样的话,只能使用a这一个枚举类型的变量,不能再定义其他的枚举类型。

    enum  {Jan=1,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,dec} a;
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^