2011-10-18 17 views
10

Tengo una función que siempre devolverá una estructura con valores conocidos. ¿Cuál es la sintaxis?Cómo devolver una estructura literal compuesta

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

estoy recibiendo un error de compilación en la línea de retorno:
de error: error de sintaxis

¿Alguna idea? Estoy usando un compilador cruzado para un objetivo incrustado, por lo que podría ser mi compilador.


Editar
Es mi compilador. Como cnicutar comentó, es un código válido de C99.

Algunas personas señalaron que podría crear una variable. Mi objetivo era evitar crear una variable solo para devolverla.

+8

Es el compilador. C99 lo admite perfectamente. – cnicutar

+0

¿Qué tal C++? (¿GCC C++? ¿Hay algún cambio?) – imacake

+0

@imacake La pregunta es sobre C, pero supongo que G ++ la admite de manera predeterminada. – YoYoYonnY

Respuesta

0

La forma más obvia sería la creación de una variable del tipo apropiado:

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

parece que estás tratando de lanzar un inicializador como una estructura :-)

Esto no es válida sintaxis. Pruebe algo como:

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

Pero sería mejor para mostrar exactamente cómo se declara MyStruct, por si acaso.

+1

No, el OP no está lanzando nada más que devolver un compuesto literal. Pero esta es una característica C99 que aparentemente no es ubicua. – cnicutar

+0

@cnicutar Solo estaba bromeando. ¿Cómo puedo poner una línea sobre mi texto? Quiero borrar la parte donde digo que la sintaxis es inválida. C99 me engaña. – sidyll

+0

He editado para ti. – cnicutar

Cuestiones relacionadas