Контекст
Среда, в которой существующий код C ++ основывается уже на французских идентификаторах, но без диакритических знаков (é
î
, ç
и т. Д.).Кодовая база привязана к среде, обеспечивающей g ++ (GCC) 4.4.7 20120313 (Red Hat 4.4.7-23).
Цель
Оценить возможность использования диакритических знаков в коде взаданная среда.
Протестировано до сих пор
Пример фрагмента, похожего на "hello world", français.C
#include <string>
#include <iostream>
int main(){
typedef std::string chaîne;
chaîne = "Bonjour tout le monde !"
std::out << chaîne << std::endl;
}
Простые инструкции по компиляции с большинством соответствующих флагов компиляции, которые гденайдено в CMakeLists.txt
:
cmake_minimum_required(VERSION 2.8.9)
project (civilité)
add_executable(civilité français.C)
add_compile_options(-std=c++0x -fextended-identifiers)
Результат попытки компиляции:
cmake .
[…]
make 2>&1| sed -e"s/^\/.*\(français.C\)/\1/" # get rid of absolute paths
[100%] Building CXX object CMakeFiles/civilité.dir/français.C.o
français.C:5: error: stray ‘\303’ in program
français.C:5: error: stray ‘\256’ in program
français.C:6: error: stray ‘\303’ in program
français.C:6: error: stray ‘\256’ in program
français.C:7: error: stray ‘\303’ in program
français.C:7: error: stray ‘\256’ in program
français.C: In function ‘int main()’:
français.C:5: error: expected initializer before ‘ne’
français.C:6: error: ‘cha’ was not declared in this scope
français.C:6: error: expected ‘;’ before ‘ne’
make[2]: *** [CMakeFiles/civilité.dir/français.C.o] Error 1
make[1]: *** [CMakeFiles/civilité.dir/all] Error 2
make: *** [all] Error 2
Заметки
Комментарии о том, почему было бы лучше придерживаться английского языкаидентификаторы бесполезны.Речь идет о соблюдении соглашения о существующей кодовой базе, в которой уже используются французские слова, но при вводе новых идентификаторов переход от обрезанных в ASCII версий к обычному написанию.