São dólar-sinais permitido em identificadores em C ++ 03?
-
06-09-2019 - |
Pergunta
O que o C ++ digamos padrão sobre o uso de cifrões em identificadores, como Hello$World
? eles são legais?
Solução
A c ++ identificador pode ser composta por qualquer um dos seguintes:. _ (Sublinhado), os algarismos 0-9, as letras a-z (ambos os casos superior e inferior) e não pode começar com um número
Há uma série de excepções, como C99 permite extensões para o padrão (por exemplo visuais estúdio ).
Outras dicas
Eles são ilegais. Os únicos caracteres legais em identificadores são letras, números e _. Identificadores também não pode começar com números.
Em C ++ 03, as respostas dadas anteriormente estão corretos: eles são ilegais. Em C ++ 11 a situação alterados:
A resposta aqui é "Talvez" :
De acordo com §2.11 , identificadores podem consistir de dígitos e identificador-não- dígitos , começando com um dos últimos. identificador-não- dígitos são o a-z
de costume, A-Z
e sublinhado, além desde C ++ 11 que incluem universais caracteres nomes (por exemplo \uBEAF
, \UC0FFEE32
), e outros personagens definido pela implementação . Por isso, é implementação definida se estiver usando $
em um identificador é permitido. VC10 e suporta até que, versões talvez mais cedo, também. Ele até suporta identificadores como こんばんは
.
Mas: eu não iria usá-los. Faça identificadores como legível e portátil quanto possível. $
é implementação definida e, portanto, não portátil.
Não legal, mas muitos se não a maioria dos compiladores apoiá-los, note que este pode depender de plataforma, assim gcc no braço não apoiá-los devido a restrições de montagem.
A seção relevante é "2.8 Identifiers [lex.name]". A partir do conjunto básico de caracteres, os caracteres válidos são A-Z a-z 0-9 e _. No entanto, os caracteres como E (U + 00E9) também são permitidos. Dependendo do seu compilador, você pode precisar entrar E como \ u00e9, no entanto.
Eles não são legais em C ++. No entanto, alguns C ++ C / derivado línguas (como Java e JavaScript) permitem-los.
ilegal. Eu acho que o cifrão e backtick são os únicos sinais de pontuação no meu teclado que não são usados ??em algum lugar C ++ (o sinal "%" é em cadeias de formato, que estão em C ++ por referência à norma C).