2012-06-13 9 views
6

Si una estructura solo se usa en una función, ¿puedo declararla en esa función? ¿Puedo hacer esto:Estructura local en c

int func() 
{ 
    struct { 
     int a, b; 
    } s; 

    s.a=5; 

    return s.a; 
} 

gcc atragantó con ella, pero emite un error de aspecto muy raro que yo no podía entender en vez de decir "Lo siento, no se puede hacer eso".

+9

Sería útil si proporcionó el mensaje de error. – Ryan

+0

@Rayn Lo intenté nuevamente para ver si podía obtener el error, y esta vez compilé. Era un error de aspecto muy extraño para un problema de sintaxis (era un error del enlazador con lo que parecía un nombre de C++ destrozado) – baruch

+0

No hay nada malo en eso. Intenta renombrar cosas; tal vez colisionaste con un nombre existente. ¿Estás usando un compilador de C++? – wildplasser

Respuesta

9

Este es un código C89/C99/C11 perfectamente válido, esta es una estructura sin etiqueta y el objeto tiene alcance de bloque. Compruebe C99 6.7.2.3p6 para ver que el identificador de la etiqueta es opcional.