此問題的unicode文本可能無法在所有瀏覽器中正確顯示。Unicode中的變量名稱中的特殊字符不允許使用?
clang
現在(> 3.3)支持變量名http://llvm.org/releases/3.3/tools/clang/docs/ReleaseNotes.html#major-new-features Unicode字符。
但是有些特殊字符仍然被禁止。
int main(){
double α = 2.; // alpha, ok!
double ∞ = 99999.; // infinity, error
}
,並提供:
error: non-ASCII characters are not allowed outside of literals and identifiers
double ∞ = 99999.;
是什麼clang
α
(阿爾法)和∞
(infinty)之間的根本區別?前者是unicode,後者不是unicode,但同時不是ASCII碼?
是否有解決方法或選項允許clang
(或順便說一句,gcc
)中的這組字符?
注1):∞
僅僅是一個例子,也有很多是潛在有用的,但也被禁止,如∫
或∂
字符。 2)我不是問這是否是個好主意,請把它當作技術性問題。 3)我對Linux中的clang 3.4
的C++編譯器感興趣(gcc 4.8.3
不支持這個)。我使用UTF-8
編碼和Unix/Linux
行結尾保存源文件爲gedit
。 4)添加其他正常的第一字符不幫助:_∞
的答案指向一個明確的NO。有些範圍確實不是 ,也不會很快。要進一步移動到總共 瘋狂,我發現的最佳選擇是使用 有效看起來相同的字符。 (現在,這我可能會承認這不是一個好主意。)這些替代品可以在這裏找到 http://shapecatcher.com/。結果(如果對不起它傷害你的眼睛):
// double ∞ = 99999.; // still error // double ⧞ = 99999.; // infinity negated still error double ꝏ = 99999.; // letter oo double Ꝏ = 99999.; // letter OO // double ⧜ = 99999.; // incomplete infinity still error
其他「另類」死在那些允許範圍內的問題提到振鈴:
ʃ
,。
這些名字是一個可怕的想法。你想用這個做什麼?某種模糊比賽? – stefan 2014-10-30 18:15:58
@stefan:據推測,編寫看起來像數學符號的代碼。如果目標受衆是數學家,這不是一個壞主意。 – 2014-10-30 18:19:28
@MikeSeymour我是一名數學家,我討厭它;-)但足夠公平。雖然它是不可移植的。這是任何事情的最大缺點。 – stefan 2014-10-30 18:20:48