On Fri, 7 Feb 2014, Sergey B Kirpichev wrote:
Так как стандарт C99 не поддерживает юникода в качестве имён, я подумал,
что возможно можно использовать LaTeX только для отображения в редакторе
(в моём случае Emacs), а перед компиляцией прогонять программу через
дополнительный парсер, заменяющий LaTeX на имена, соответствующие
стандарту C99.
Стандарт поддерживает; не поддерживают, AFAIK, компиляторы.
Стандарт, начиная с С99, действительно поддерживает.
(draft_C99_n1256)
6.4.3 Universal character names
A universal character name shall not specify a character
whose short identifier is less than 00A0
other than 0024 ($), 0040 (@), or 0060 ('),
nor one in the range D800 through DFFF inclusive.
clang поддерживает UTF-8:
// ------ hello_utf.c
#include <stdio.h>
int main()
{
char* сообщение = "Люля кебаб";
printf("Hello, %s!\n",сообщение);
return 0;
}
// ---------
clang hello_utf.c
./a.out
Hello, Люля кебаб!
gcc тоже поддерживает, но в сильно извращенной форме:
http://gcc.gnu.org/wiki/FAQ#What_is_the_status_of_adding_the_UTF-8_support_for_identifier_names_in_GCC.3F
to_UCN.sh hello_utf.c
gcc -fextended-identifiers -std=c99 /tmp/hello_utf.c
./a.out
Hello, Люля кебаб!
Ю.