Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
枚举在C中的使用?_C_Enums - Fatal编程技术网

枚举在C中的使用?

枚举在C中的使用?,c,enums,C,Enums,是否存在可以将一个枚举复制到另一个枚举的方法?例如: enum Element4_Range{a4=1,b4,c4,d4}; enum Element3_Range{a3=1,b3,c3}; enum Element3_Range Myarr3[10]; enum Element4_Range Myarr4[10]; enum Element3_Range MyFunc(Element4_Range); main() {

是否存在可以将一个枚举复制到另一个枚举的方法?例如:

     enum Element4_Range{a4=1,b4,c4,d4};
     enum Element3_Range{a3=1,b3,c3};
     enum Element3_Range Myarr3[10];
     enum Element4_Range Myarr4[10];

     enum Element3_Range MyFunc(Element4_Range);

     main()
     {
          MyFunc(Myarr4);
     }
     enum Element3_Range MyFunc(Element4_Range Target)
     {
           enum Element3_Range Source;
           Source = Target;-----------Is this possible?
      }
如果没有,请告诉我如何将enum的值从一个复制到另一个

执行此操作时,我遇到了一个错误,如

  • Element3_Range*”分配给
    Element3_Range[10]时的类型不兼容
  • 无法将分配中的
    Element4\u Range'转换为
    Element3\u Range'
  • 感谢和问候
    玛迪

    投下它:

    Source = (Element3_Range)Target;
    

    枚举是带有类型检查的int。如果您不想进行类型检查,请使用INT.< /P> < P>。您也可以考虑使用开关块:

    switch(Target) {
    case a4:
      return a3;
    case b4:
      return b3;
    case c4:
      return c3;
    }
    

    可能并不总是希望使用枚举的“实际值”,而不是其“逻辑值”。当然,这并不快,但这不是重点。

    @Jim--我试过了,但没有成功。错误jst突然出现,从
    enum element 4_Range*”转换为
    enum element 3_Range*。@maddy:基于这个错误,您试图将指向enum的指针强制转换为指向enum的指针。你一定是在这个问题上粘贴了错误的代码。目标是指针吗?来源是什么?枚举是一个积分值,你应该能够把它投射出来。@ MyDy你在C++模式下运行编译器吗?例如,您的源文件是否以.cpp(而不是.c)结尾,并且您正在使用gcc?在C中使用建议的强制转换时,您不应该看到报告的错误。此外,不建议使用强制转换枚举——尽管您将看到,这是可能的。;)@是的,我正在运行C++编译器,但是我使用JMSPY(源代码,目标,10)尝试了JST;我想效果不错,有什么建议吗plz@Maddy.  我的名字里没有“l”。。。不管你是否能够调用MEMcPy[(),使用C++编译器都会影响你使用强制转换的能力。大多数C++编译器都有C模式编译C,编译器使用的是什么,源代码文件的扩展是什么?