Por que as palavras-chave feias em C11?

15

No momento, estou lendo um rascunho da especificação C11. As novas palavras-chave introduzidas: _Bool, _Alignof, _Atomic são como extensões personalizadas, em vez de palavras-chave padrão reservadas, como struct, union, int .

Eu percebo que o padrão consiste basicamente em extensões padronizadas ... mas ainda assim, isso é horrível! Talvez nós em breve acabemos com __Long_Long_Reallylong_Integer_MSVC_2020_t rastejando no padrão!

A compatibilidade retroativa de código não padrão é a única razão do novo estilo das palavras-chave?

    
por Vorac 07.05.2013 / 15:06
fonte

2 respostas

20

Eu imagino que compatibilidade retroativa com código perfeitamente padrão é uma razão mais importante.

Se você adicionar uma palavra-chave que possa ter sido usada como um identificador legítimo no código anterior, você criará uma tonelada de problemas, de possíveis erros sutis, especialmente em C, uma linguagem com regras de análise complicadas de alguma forma.

Se esses identificadores foram usados como uma interface pública em algum lugar, você adiciona problemas a todos os usuários de tais bibliotecas desafortunadas, que podem não usar C, mas chamam a biblioteca de Ruby, ou Python, etc.

É por isso que novas palavras-chave tendem a se parecer menos com palavras bonitas e mais com hacks rápidos que as pessoas têm chances menores de usar para outra finalidade.

    
por 07.05.2013 / 15:20
fonte
8

Nomes que começam com um sublinhado e uma letra maiúscula (e qualquer coisa com sublinhado duplo) foram reservados para a implementação da biblioteca padrão / compiladora nos padrões anteriores.

De Identificadores reservados de C89 e C99:

Also reserved for the implementor are all external identifiers beginning with an underscore, and all other identifiers beginning with an underscore followed by a capital letter or an underscore.

Portanto, em teoria, essas novas palavras-chave não devem estar em uso em nenhum código escrito anteriormente e isso leva a uma melhor compatibilidade retroativa do que qualquer nome simples, que provavelmente é o único motivo.

    
por 07.05.2013 / 16:03
fonte

Tags