ich bin zu finden, dass ich nicht als gültige Kennung mit g ++ 4.7, auch bei der -fextended-identifiers
Option aktiviert verwenden kann:(und andere Unicode-Zeichen) in Bezeichnern nicht von g ++ erlaubt
int main(int argc, const char* argv[])
{
const char* = "I'm very happy";
return 0;
}
main.cpp:3:3: error: stray ‘\360’ in program
main.cpp:3:3: error: stray ‘\237’ in program
main.cpp:3:3: error: stray ‘\230’ in program
main.cpp:3:3: error: stray ‘\203’ in program
Nach einigem googeln entdeckte ich, dass UTF-8 characters are not yet supported in identifiers aber ein universal-character-name funktionieren sollte. Also ich konvertiere meine Quelle:
int main(int argc, const char* argv[])
{
const char* \U0001F603 = "I'm very happy";
return 0;
}
main.cpp:3:15: error: universal character \U0001F603 is not valid in an identifier
so offensichtlich ist kein gültiger Bezeichner Charakter. Die Norm erlaubt jedoch ausdrücklich Zeichen aus dem Bereich 10000-1FFFD
in Anhang E.1 und verbietet es nicht als Anfangszeichen in E.2. Meine nächste Bemühung war zu sehen, ob irgendwelche anderen Unicode-Charaktere funktionierten - aber keine, die ich versuchte, tat. Nicht einmal der jemals wichtige PILE OF POO() Charakter.
Also, aus Gründen der sinnvollen und beschreibenden Variablennamen, was gibt? Tut -fextended-identifiers
tun, wie es wirbt oder nicht? Wird es nur in der neuesten Version unterstützt? Und welche Art von Unterstützung haben andere Compiler?
Read [diese] (http: /. /www.learncpp.com/cpp-tutorial/22-keywords-and-naming-identifiers/) – ErikEsTT
@ErikEsTT Leider erwähnt diese Seite nicht, dass ein Bezeichner einen 'universal-character-name' enthalten kann, also was auch immer Ratschläge sie geben bei Namenskonventionen nicht an, wie wichtig es ist, Smileys als Variablennamen zu verwenden (siehe §2.11 von ISO/IEC 14882: 2011 (E). –
Hmm, es scheint das Programm 'static const char * x =" I bin sehr glücklich ";" crashs clang 3.1 ... – kennytm