[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Программирование научных программ на C.



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, Люля кебаб!

Ю.

Reply to: