Los siguientes identificadores no tienen ningún vínculo: un identificador declarado como cualquier cosa que no sea un objeto o una función; un identificador declarado como un parámetro de función; identificador de ámbito de bloque para un objeto declarado sin el especificador de clase de almacenamiento extern.Enlace del alcance del bloque C estándar
{
static int a; //no linkage
}
Para un identificador declarado con el extern especificador de clase de almacenamiento en un ámbito en el que una declaración previa de que el identificador es visible, si la declaración previa especifica enlace interno o externo, la unión del identificador en la declaración posterior es la misma que la vinculación especificada en la declaración previa. Si no hay una declaración previa visible, o si la declaración previa no especifica ningún vínculo, , entonces el identificador tiene un enlace externo.
{
static int a; //no linkage
extern int a; //a should get external linkage, no?
}
error GCC: declaración externa de una continuación de una declaración sin vinculación
Puede alguien explicar por qué me sale este error?
Gracias
Podría ser la semántica, "especifica ninguna vinculación" frente a "especifica" ningún vínculo". La promoción automática en este caso suena loca. –
No entiendo la diferencia. ¿Podrías elaborar? – mindless