Unicode / Sonderzeichen in Variablennamen in clang nicht erlaubt?
Diese Frage enthält Unicode-Text, der möglicherweise nicht in allen Browsern korrekt angezeigt wird.
clang
now (> 3.3) unterstützt Unicode-Zeichen invariable names http: //llvm.org/releases/3.3/tools/clang/docs/ReleaseNotes.html#major-new-feature.
Jedoch einige Sonderzeichen sind noch verboten.
int main(){
double α = 2.; // alpha, ok!
double ∞ = 99999.; // infinity, error
}
geben:
error: non-ASCII characters are not allowed outside of literals and identifiers
double ∞ = 99999.;
Was ist der grundlegende Unterschied zwischenα
(alpha) und∞
(unendlich) fürclang
? Dass ersterer Unicode ist und letzterer kein Unicode, aber gleichzeitig kein ASCII?
Gibt es eine Problemumgehung oder eine Option, um diesen Zeichensatz in @ zuzulasseclang
(oder BTW ingcc
)?
Notes: 1)∞
ist nur ein Beispiel, es gibt viele Zeichen, die möglicherweise nützlich, aber auch verboten sind, wie∫
oder∂
. 2) Ich frage nicht, ob es eine gute Idee ist, bitte nehmen Sie es als technische Frage. 3) Ich interessiere mich für den C ++ - Compiler vonclang 3.4
unter Linux gcc 4.8.3
unterstützt dies nicht). Ich speichere die Quelldateien mitgedit
usingUTF-8
Kodierung undUnix/Linux
Zeilenende. 4) Das Hinzufügen anderer normaler Anfangsbuchstaben hilft nicht:_∞
Die Antworten zeigen auf ein definitives NEIN. Einige Bereiche sind in der Tat nicht erlaubt und werden es auch nicht bald sein. Um noch einen Schritt weiter zu gehen, war die beste Alternative, die ich gefunden habe, Charaktere zu verwenden, die praktisch gleich aussehen. (Jetzt,Die Ich gebe vielleicht zu, das ist keine gute Idee.) Diese Alternativen finden Sie hierhttp: //shapecatcher.com. Das Ergebnis (sorry wenn es dir in den Augen wehtut):
// double ∞ = 99999.; // still error
// double ⧞ = 99999.; // infinity negated still error
double ꝏ = 99999.; // letter oo
double Ꝏ = 99999.; // letter OO
// double ⧜ = 99999.; // incomplete infinity still error
Weitere in der Frage erwähnte "alternative" tote Klingelzeichen, die im zulässigen Bereich liegen:ʃ
, .