Questa domanda ha testo unicode che potrebbe non essere visualizzato correttamente in tutti i browser.Non sono consentiti caratteri Unicode/speciali nei nomi di variabili in clang?
clang
ora (> 3.3) supporta i caratteri Unicode nei nomi di variabili http://llvm.org/releases/3.3/tools/clang/docs/ReleaseNotes.html#major-new-features.
Tuttavia alcuni caratteri speciali sono ancora vietati.
int main(){
double α = 2.; // alpha, ok!
double ∞ = 99999.; // infinity, error
}
dando:
error: non-ASCII characters are not allowed outside of literals and identifiers
double ∞ = 99999.;
Qual è la differenza fondamentale tra α
(alfa) e ∞
(infinty) per clang
? Che il primo è unicode e quest'ultimo non è unicode ma allo stesso tempo non è ASCII?
C'è una soluzione alternativa o un'opzione per consentire questo set di caratteri in clang
(o BTW in gcc
)?
Note: 1) ∞
è solo un esempio, ci sono un sacco di personaggi che sono potenzialmente utili ma anche vietata, come ∫
o ∂
. 2) Non sto chiedendo se è una buona idea, si prega di prenderlo come una domanda tecnica. 3) Sono interessato al compilatore C++ di clang 3.4
in Linux (gcc 4.8.3
non supporta questo). Sto salvando i file sorgente con gedit
usando la codifica UTF-8
e la fine della riga Unix/Linux
. 4) l'aggiunta di altri normali primi caratteri non aiuta: _∞
Le risposte indicano un NO definitivo. Alcune gamme in effetti non sono consentite né né saranno presto. Per spostare un ulteriore passo avanti verso la follia totale , l'alternativa migliore che ho trovato è stata quella di utilizzare i caratteri che sembrano effettivamente uguali. (Ora, questo posso ammettere che non è una buona idea.) Queste alternative possono essere trovate qui http://shapecatcher.com/. Il risultato (scusate se fa male agli occhi):
// double ∞ = 99999.; // still error // double ⧞ = 99999.; // infinity negated still error double ꝏ = 99999.; // letter oo double Ꝏ = 99999.; // letter OO // double ⧜ = 99999.; // incomplete infinity still error
Altre suonerie "alternative" morti menzionati nella domanda che sono nel range consentito:
ʃ
,.
questi nomi sono una pessima idea. Cosa vuoi ottenere con quello? Una sorta di contest di offuscamento ?? – stefan
@stefan: Presumibilmente, scrivendo un codice simile alla notazione matematica. Non è una cattiva idea se il pubblico previsto è matematico. –
@MikeSeymour Sono un matematico, e lo odio ;-) Ma abbastanza equo .. È comunque non portatile. Questo è il più grande inconveniente di qualsiasi cosa. – stefan