所以,我有一个联盟:返回工会在C,但使它看起来不错
typedef union {
int intVal;
char charVal;
bool boolVal;
} myUnion_t;
而且我有一个函数,foo
,(在同一文件中,因为后者联盟),这将返回myUnion_t
。
我当然可以这样做:
myUnion_t foo(int n){
myUnion_t rtn;
if(n == 0){
rtn.intVal = 1;
} else if(n == 1){
rtn.charVal = 'b';
} else {
rtn.boolVal = false;
}
return rtn;
}
但是,这是相当麻烦的;我的CDO不喜欢它。有没有一个更好的办法做到这一点,是这样的:
myUnion_t foo(int n){
if(n == 1){
return 1;
} else if(n == 2){
return 'b';
} else {
return false;
}
}
编辑:好吧,工会本身是混乱的。感谢您的帮助,我只是做了正常的方式:)
“但是这相当混乱”不幸的是,工会自己都相当混乱。 – dasblinkenlight
什么是“这”找到一个更简单的方法?顺便说一句,你显然不能做这样的事情,'object_t'作为返回类型和局部变量的类型应该是'union object_t'。 – MikeCAT
'union object_t'和'object_t foo(...'甚至不能成功编译,'object_t'没有定义,如果它编译的话,你可以使用C++编译器,或者更改你的代码或标签。 – Olaf