一种环境,在该环境中,现有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裁剪版本转换为常规拼写。