Unicode değişken adlarını g ++ içinde kullanmaya çalışıyorum.g ++ unicode değişken adı
Çalışmıyor gibi görünmüyor.
g ++ unicode değişken adlarını desteklemiyor mu, yoksa unicode'un bir alt kümesi var mı?
Teşekkürler!
Unicode değişken adlarını g ++ içinde kullanmaya çalışıyorum.g ++ unicode değişken adı
Çalışmıyor gibi görünmüyor.
g ++ unicode değişken adlarını desteklemiyor mu, yoksa unicode'un bir alt kümesi var mı?
Teşekkürler!
Sen de unicode için \ uXXXX veya \ uXXXXXXXX kullanmak zorunda derleme -fextended-identifiers
bayrağı belirtmek zorunda ++ g
Tanımlayıcılar (değişken/sınıf isimleri vs.) olamaz (en az gcc o unicode var) uTF-8/uTF-16 ya da her türlü kodlama olması bunlar olmak zorunda:
identifier:
nondigit
identifier nondigit
identifier digit
bir nondigit
nondigit: one of
universalcharactername
_ a b c d e f g h i j k l m n o p q r s t u v w x y z
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
ve Unive olduğu
int h\u00F8yde = 10;
: o vardı
int høyde = 10;
gibi yazılacak: rsalcharactername UTF-8 olarak kaynak dosyasını kaydetmek varsa, örneğin böyle bir değişkeni olamaz, Böylece
universalcharactername:
\UXXXXXXXX
\uXXXX
olduğunu
(hangi imo tüm amacı yener - bu yüzden az miktarda yapışır)
Clang daha iyi destek var mı? – anon
Bilmiyorum, ama bunun için başka bir soru sormalısın. – nos
g ++, burada standart olarak uygun değildir (ancak Comeau dahil olmak üzere başka derleyiciler de değildir).Standart C++ için, çevirinin ilk aşamasında "Temel kaynak karakter kümesinde (2.3) bulunmayan herhangi bir kaynak dosya karakteri, bu karakteri tanımlayan evrensel karakter ismiyle değiştirilir" ve lexer kuralları, söyledi. C++ 11 standardında bu, "çevirinin fazları" §2.2/1 1. liste maddesinde belirtilmiştir. –
Cpp hazırlaması için tek satırlık bir yama Rocessor, UTF-8 girişine izin verir. gcc için ayrıntılar önişlemci paylaşıldığı için, aynı yama yanı g ++ için çalışmalı,
ancakhttps://www.raspberrypi.org/forums/viewtopic.php?p=802657
de verilmektedir. Özellikle, yama itibariyle gerekli gcc-5.2 Yukarıdaki yama çalışması için, iconv bir son hali C99 dönüşümleri destekleyen yüklü olması gerektiğini
diff -cNr gcc-5.2.0/libcpp/charset.c gcc-5.2.0-ejo/libcpp/charset.c
*** gcc-5.2.0/libcpp/charset.c Mon Jan 5 04:33:28 2015
--- gcc-5.2.0-ejo/libcpp/charset.c Wed Aug 12 14:34:23 2015
***************
*** 1711,1717 ****
struct _cpp_strbuf to;
unsigned char *buffer;
! input_cset = init_iconv_desc (pfile, SOURCE_CHARSET, input_charset);
if (input_cset.func == convert_no_conversion)
{
to.text = input;
--- 1711,1717 ----
struct _cpp_strbuf to;
unsigned char *buffer;
! input_cset = init_iconv_desc (pfile, "C99", input_charset);
if (input_cset.func == convert_no_conversion)
{
to.text = input;
Not olduğunu. Bunu doğrulamak için iconv --list yazın, aksi halde, yukarıdaki linkte açıklandığı gibi gcc ile birlikte iconv'nin yeni bir sürümünü yükleyebilirsiniz. Eğer x86 bina ve hem de C++ derleyici eklemek istediğiniz takdirde
$ ../gcc-5.2.0/configure -v --disable-multilib \
--with-libiconv-prefix=/usr/local/gcc-5.2 \
--prefix=/usr/local/gcc-5.2 \
--enable-languages="c,c++"
için configure komutunu değiştirin.
¤ g ++ standart olarak uygun değildir. tanımlayıcılarda karakterler. Ama herhangi bir derleyiciyi bilmiyorum * * uygun. Çoğu derleyicinin betimleyici karakterleri İngilizce A ... Z ve alt çizgi ile artı işareti olarak iki şekilde sınırladığı karakterleri sınırlandırıyor: standart E Ekinde belirtilen çok sayıda Unicode karakterine izin vermiyor (I ' ve bunları http://pastie.org/3110152 adresinde listelediler ve standartların izin vermediği $ a izin verdiler. Kısacası, standart ve mevcut uygulama oldukça fazladır. Belki C++ 11 ile ;-) Cheers & hth., –
@ Cheersandhth.-Alf Deneyin clang :) –