g++ nombre de variable unicode
variables (2)
Un parche de una línea para el preprocesador cpp permite la entrada UTF-8. Los detalles para gcc se dan en
https://www.raspberrypi.org/forums/viewtopic.php?p=802657
sin embargo, dado que el preprocesador se comparte, el mismo parche también debería funcionar para g ++. En particular, el parche necesario, a partir de gcc-5.2 es
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;
Tenga en cuenta que para que funcione el parche anterior, se debe instalar una versión reciente de iconv que admita conversiones C99. Escriba iconv --list para verificar esto, de lo contrario, puede instalar una nueva versión de iconv junto con gcc como se describe en el enlace de arriba. Cambiar el comando de configuración a
$ ../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++"
si está compilando para x86 y también desea incluir el compilador de c ++.
Estoy tratando de usar nombres de variables unicode en g ++.
No parece funcionar.
¿G ++ no admite nombres de variables unicode, ... o hay algún subconjunto de Unicode (desde el que no estoy probando).
¡Gracias!
-fextended-identifiers
especificar el -fextended-identifiers
al compilar, también debe usar / uXXXX o / uXXXXXXXX para unicode (al menos en gcc es unicode)
Los identificadores (nombres de variables / clases, etc.) en g ++ no pueden ser de utf-8 / utf-16 o de cualquier codificación, tienen que ser:
identifier:
nondigit
identifier nondigit
identifier digit
un no digito es
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
y un nombre de personaje universal es
universalcharactername:
/UXXXXXXXX
/uXXXX
Por lo tanto, si guarda su archivo fuente como UTF-8, no puede tener una variable como, por ejemplo:
int høyde = 10;
tenía que escribirse como:
int h/u00F8yde = 10;
(que imo vencería a todo el propósito, así que quédate con az)