un patch d'une ligne à la préparation cpp Le processeur permet l'entrée UTF-8. Détails pour gcc sont donnés à
https://www.raspberrypi.org/forums/viewtopic.php?p=802657
cependant, le préprocesseur est partagée, le même patch devrait fonctionner pour g ++ ainsi. En particulier, le patch nécessaire, au-gcc 5.2 est
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;
Notez que pour le patch ci-dessus fonctionne, une version récente de iconv doit être installé qui prend en charge les conversions C99. Tapez iconv --list pour vérifier cela, sinon, vous pouvez installer une nouvelle version de iconv avec gcc comme décrit dans le lien ci-dessus. Modifier la commande configure pour
$ ../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 vous construisez pour x86 et que vous voulez inclure le compilateur C++ ainsi.
¤ g ++ est tout simplement pas conforme à la norme WRT. caractères dans les identifiants. Mais je ne connais aucun compilateur qui soit * conforme *. J'ai l'impression que la plupart des compilateurs limitent les caractères d'identification à l'anglais A ... Z et au soulignement, plus le signe $, ce qui est faux de deux façons: ne pas autoriser l'énorme gamme de caractères Unicode spécifiés dans l'annexe E de la norme Nous les avons listés sur http://pastie.org/3110152), et en autorisant $, ce que la norme ne permet pas. En bref, la pratique standard et existante est très en désaccord. Peut-être avec C++ 11 ... ;-) Cheers & hth., –
@ Cheersandhth.-Alf Essayez clang :) –