2011-10-18 10 views
10

Ho una funzione che restituirà sempre una struct con valori noti. Qual è la sintassi?Come restituire una struct letterale composta

struct MyStruct Function(void) 
{ 
    return (struct MyStruct){1,2,3}; 
} 

sto ottenendo un errore di compilazione sulla linea di ritorno:
Errore: errore di sintassi

Tutte le idee? Sto usando un cross-compiler su un target embedded, quindi potrebbe essere il mio compilatore.


Modifica
E 'il mio compilatore. Come ha commentato cnicutar, è un codice C99 valido.

Alcune persone hanno sottolineato che potrei creare una variabile. Il mio obiettivo era evitare di creare una variabile solo per restituirla.

+8

È il compilatore. C99 supporta perfettamente questo. – cnicutar

+0

Che ne dici di C++? (GCC C++? C'è un interruttore?) – imacake

+0

@imacake La domanda riguarda C, ma suppongo che G ++ lo supporti di default? – YoYoYonnY

risposta

0

Il modo più ovvia sarebbe quella di creare una variabile del tipo appropriato:

struct MyStruct Function(void) { 
    struct MyStruct ret = {1,2,3}; 
    return ret; 
} 
4

Sembra che si sta tentando di lanciare un inizializzatore come struct :-)

Questo non è valido sintassi. Provare qualcosa di simile:

struct MyStruct Function(void) 
{ 
    struct MyStruct s = {1,2,3}; 
    return s; 
} 

Ma sarebbe meglio mostrare esattamente come MyStruct è dichiarato, per ogni evenienza.

+1

No, l'OP non sta trasmettendo nulla ma restituisce un valore letterale composto. Ma questa è una caratteristica del C99 che apparentemente non è onnipresente. – cnicutar

+0

@cnicutar Stavo solo scherzando. Come posso mettere una riga sul mio testo? Voglio cancellare la parte in cui dico che la sintassi non è valida. C99 mi inganna. – sidyll

+0

Ho modificato per te. – cnicutar

Problemi correlati