c - 在 C 中访问枚举成员

标签 c struct enums

我有一个结构类型的函数,其中包含一些整数和对枚举的引用,如下所示:

typedef struct Test {
    Error e;
    int temp;
    int value;
}Test;

枚举在哪里:

typedef enum Error {
    IOError,
    ExternalError,
    ElseError,
}Error;

假设我有一个函数想要返回一个错误(3 的枚举),具体取决于是否发生某些情况。

其中函数的类型为 Test(我无法更改传入的任何类型或值),

为什么我不能返回这样的错误?我将如何返回它(我无法更改结构定义或函数原型(prototype))。

Test errorFunc() {

    return Test->e->IOError; //gives an error
}

任何帮助将不胜感激!

最佳答案

你不需要这样做,只需这样做

Error
errorFunc() 
{
    return IOError;
}

没有静态结构成员,也没有命名空间,因此您只需使用枚举1 直接。

另外,在 您不会使用 -> 间接运算符,而是执行类似的操作

class Test
{
public:
    enum Error
    {
        IOError
    };
};

And then you can have

Test::Error
errorFunc()
{
    return Test::IOError;
}

这显然就是你感到困惑的原因。

<小时/>

1enum 不是 struct,因此从技术上讲它没有成员

关于c - 在 C 中访问枚举成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34828106/

相关文章:

objective-c - NSMutableDictionary 用于巨大的 float 数据集

c - 什么时候需要 CAMLparamX?

swift - 在 Swift 3 中从数据初始化结构

java - 如何从静态上下文中引用枚举变量?

java - 为什么Spring要求枚举参数的名称与字符串值相同?

c++ - 在开发国际象棋程序时,用给定的值初始化下面的方向数组有什么意义?

c - 删除文件之前需要fsync吗?

c - 如何为嵌入在结构中的 union 的特定成员可移植地分配空间

c - 尝试使用结构体初始化并填充二维字符数组

java - Android - 编译错误变量无法应用