所以,我有一個聯盟:返回工會在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