Escopo do bloco e vínculo interno?
Aug 30 2020
Do padrão C18 (6.7.9):
Se a declaração de um identificador tiver escopo de bloco e o identificador tiver ligação externa ou interna , a declaração não deve ter inicializador para o identificador.
Não tenho nenhum problema com o escopo do bloco + ligação externa. Mas, não consigo ver como um identificador pode ter escopo de bloco e vínculo interno. É mesmo possível?
Respostas
6 JensGustedt Aug 30 2020 at 02:22
Se o seu global estiver definido
static int hui;
tem ligação interna. Então
void f(void) {
extern int hui;
}
refere-se ao mesmo objeto com ligação interna, mesmo que a palavra-chave diga extern.
Portanto, externé um nome impróprio e provavelmente deveria ser linkage.
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?