我有一个结构类型的函数,它包含一些整数和对枚举的引用,如下所示:
resource
枚举是:
typedef struct Test {
Error e;
int temp;
int value;
}Test;
并说我有一个想要返回错误的函数(3的枚举),具体取决于是否发生了什么。
如果函数的类型为Test(我无法更改传入的任何类型或值),
为什么我不能像这样返回错误?我将如何返回它(我无法更改结构定义和函数原型)。
typedef enum Error {
IOError,
ExternalError,
ElseError,
}Error;
非常感谢任何帮助!
答案 0 :(得分:0)
在C中,您需要编码:
Test errorFunc() {
return IOError;
}
这是C,一切都在全局命名空间中,没有" strong" enums和enum"成员"基本上是"弱类型的整数常量"。因此,访问"数据成员"一个枚举是没有意义的。只需使用常量。
编译器将检查所使用的常量是否属于您返回的类型,如果不是,则进行投诉。抱怨多少取决于编译器,因为枚举是一个有点奇怪的弱类型集中(Stroustrup曾经称它们为#34;奇怪的是一半被烘焙的概念")。
答案 1 :(得分:-1)