Voglio solo sapere se posso fare una cosa del genere ...Posso restituire una struttura inizializzata su una riga in ANSI C?
typedef struct Result{
int low, high, sum;
} Result;
Result test(){
return {.low = 0, .high = 100, .sum = 150};
}
so che è il modo sbagliato, ma posso farlo o ho bisogno di creare una variabile locale per ricevere i valori e poi restituirlo?
Questo metodo comporta ram ripartendo, dal compilatore, per tenere un 'Risultato' struct, dove i campi sono inizialmente copiati, poi copiato nuovamente a istanza della 'struct Risultato' i chiamanti. Queste due copie e l'allocazione della struttura dei risultati sono vere e proprie perdite di ciclo RAM e CPU. – user3629249
@ user3629249: Ma questi possono essere ottimizzati e sono specifici dell'ABI. Su Linux/x86-64 una 'struct' a due campi viene spesso restituita in due registri. –