2015-05-08 19 views
12

Geleneksel olarak, C++'da bir tanımlayıcının parçası olarak kullanabileceğimiz kabul edilen karakterler, ilk karakterden sonra _, a-z, A-Z ve 0-9'dur.Visual Studio veya GCC'de C++ tanımlayıcı adları olarak emoji'yi kullanma

Visual Studio veya GCC'yi tanımlayıcı adlarının bir parçası (veya herhangi bir isteğe bağlı unicode karakteri) olarak emoji'yi kabul edecek şekilde yapılandırmanın bir yolu var mı?

int a = 2, = 3; 
++; *= 2; 
int ∑(int a, int b) {return a + b;} 
cout << ∑(a * , 3) << endl; 

const double π = 3.14159; 
double α = sin(π/2.0); 
+6

Yakın ilişkili [Cronca değişken adlardaki Unicode/özel karakterler izin verilmiyor mu?] (Http://stackoverflow.com/q/26660180/1708801) ... [Clang'da çalışır] (http: // melpon.org/wandbox/permlink/CXG1mPgi9obikNBz) –

+1

Yanıt, C++ 11'den beri C++ özelliğinin, tanımlayıcılarda emoji karakterlerini kabul etmek için derleyicileri gerektirdiğidir ve evet, bazı ana derleyiciler bunları kabul eder. – bames53

+2

Clang iyi bir desteğe sahip ve OS X'de emoji görüntülemek için iyi destek var. MSVC'nin en az 2013'e göre oldukça iyi bir desteği var gibi görünmesine rağmen, Window'un emoji gösterme desteği, en az 8.1'e kadar arzu edilenden daha azdır. GCC 5 varsayılan olarak "-extended-identifiers" seçeneğini etkinleştirir, ancak bu sadece UCN'ler şeklinde tanımlayıcılarda emojiyi mümkün kılar: UCN'ler ve tam anlamıyla emoji yazmak (örneğin, UTF-8 kullanarak) spesifik olarak davranması için gereklidir. ama gcc henüz bunu yapmıyor. – bames53

cevap

5

Biz C++ standart genişletilmiş karakterlerin belli setleri verir Unicode/special characters in variable names in clang not allowed? görebilirsiniz. emoji codes izin verilen aralıklara giriyor gibi görünüyor. ,

C++ şartname Unicode karakterleri

Ve ayrıca adlandırma sağlar:

Bildiğim kadarıyla bu live example Visual Studio 2013 kullanılarak söyleyebilirim tanımlayıcılarda genişletilmiş karakterleri destekler ve bu C++ Identifiers documentation tarafından desteklenmektedir Visual C++ kendisi de sağlar. ASCII sınırlı değil.

ve bunun 2005'ten beri izin verildiğini belirten bir bağlantı sağlar. Bames53 olarak belirtmekle birlikte, emoji ile ilgili Windows sınırlamaları olabilir. Öte yandan

gcc

onların Character sets belgeden, çıkış kodları kullanarak hariç bunu desteklemek için görünmüyor: tanımlayıcılar olarak

ASCII aralığının dışında karakterler yalnızca ile belirtilebilir '\ u' ve '\ U' kaçar, doğrudan kullanılmaz. Eğer sıkı ISO C90 uygunluğu -std = c90 veya -fno-genişletilmiş-tanımlayıcılar gibi bir seçenek ile belirtilirse, o zaman tanımlayıcılarda bu çıkışlara izin verilmez.

İlgili konular