Donc, j'ai un syndicat:Retour une union en C, mais le faire paraître belle
typedef union {
int intVal;
char charVal;
bool boolVal;
} myUnion_t;
Et je fonction, foo
, (dans le même fichier que l'union celui-ci) qui retournera myUnion_t
.
je pouvais évidemment faire:
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;
}
Mais c'est plutôt désordonné; mon CDO ne l'aime pas. Y at-il une plus belle façon de faire, quelque chose comme:
myUnion_t foo(int n){
if(n == 1){
return 1;
} else if(n == 2){
return 'b';
} else {
return false;
}
}
EDIT: D'accord, les syndicats sont par nature en désordre. Merci pour votre aide, je vais le faire de façon normale :)
"Mais c'est plutôt désordonné" Malheureusement, les syndicats sont plutôt salissants tout seuls. – dasblinkenlight
Qu'est-ce que "ceci" pour trouver un moyen plus facile? En passant, vous ne pouvez évidemment pas faire une telle chose et le 'object_t' comme type de retour et le type de variable locale devrait être' union object_t'. – MikeCAT
'union object_t' et' object_t foo (... 'ne seront même pas compilés avec succès. 'Object_t' n'est pas défini Si vous compilez, vous utilisez un compilateur C++ Changez votre code ou le tag – Olaf