Можно ли заставить GCC компилировать UTF-8 с исходными файлами BOM?

Я разрабатываю кроссплатформенный C++, используя Microsoft Visual Studio на Windows и GCC на uBuntu Linux.

В Visual Studio я могу использовать в коде символы юникода, такие как "π" и "²". Visual Studio всегда сохраняет исходные файлы в формате UTF-8 с BOM (Byte Order Mark).

Например:

// A = π.r²
double π = 3.14;

GCC успешно компилирует эти файлы, только если я сначала удалю BOM. Если я не удаляю BOM, я получаю ошибки, подобные этим:

wwga_hydutils.cpp:28:9: error: stray '\317' in program

wwga_hydutils.cpp:28:9: error: stray '\200' in program

Что приводит меня к вопросу:

Есть ли способ заставить GCC компилировать файлы UTF-8 без предварительного удаления BOM?


Я использую:

  • Windows 7
  • Visual Studio 2010

и:

  • uBuntu Oneiric 11.10
  • GCC 4.6.1 (как предоставлено apt-get install gcc)

Edit:

Как указал первый комментатор, моя проблема была не в BOM, а в наличии неascii символов вне строковых констант. GCC не любит неascii символы в именах символов, но оказалось, что GCC полностью совместим с UTF-8 с BOM.

12
задан Boinst 21 November 2011 в 00:28
поделиться