为什么我的程序在法语下不能在Windows 7下编译?
我正在运行Windows 7法语版,并且正在尝试编译这个非常基本的程序,但Visual Studio正在固执并拒绝遵守。 我也尝试在Coliru上使用GCC 4.7和Clang trunk来编译它,并且我得到或多或少相同的错误(输出低于代码),但我认为Coliru运行在英文操作系统上,所以我不希望它仍然可以正常工作。
我究竟做错了什么? 我该如何解决它?
码
#inclure <iostream>
ent principal(ent argn, ent** argm) // entier, nombre d'arguments, valeur des arguments
{
std::cendehors << "Bonjour le monde!n";
renvoi SORTIE_SUCCÈS;
}
产量
principal.cpp:1:6: erreur: prétraitement de la directive invalide #inclure
#inclure <iostream>
^
principal.cpp:6:8: erreur: '303' égaré dans le programme
renvoi SORTIE_SUCCÈS;
^
principal.cpp:6:8: erreur: '210' égaré dans le programme
principal.cpp:3:5: erreur: «ent» ne désigne pas un type
ent principal(ent argn, ent** argm) // entier, nombre d'arguments, value des arguments
^
许多问题是由于缓存导致的,但是你的问题是另一种难题:命名事物。 是的,本地化很难。
你没有提到你正在使用哪种法语版本,但是从错误信息中,我认为你使用的是“法国(法国)”(我们的文明操作系统用户称为fr_FR
)。 MS的fr_FR
语言环境表现得非常怪异:大写重音字母被映射到它们的非重音对象(为了与一些打字机模型向后兼容)。 所以你需要写SORTIE_SUCCES
而不是SORTIE_SUCCÈS
。
解决方法是使用“法语(摩纳哥)”( fr_MC
)语言,大写重音符号按预期工作。 不幸的是,摩纳哥版本的编译器非常昂贵。 您也可以使用加拿大法语,比利时法语或瑞士法语版本,但这些都需要您提交双语( fr_CA
+ en_CA
),三语( fr_BE
+ nl_BE
+ de_BE
)或四语( fr_CH
+ it_CH
+ de_CH
+ rm_CH
)来源文件。 法语的非洲变体因为它们太穷而无法提供C ++编译器,但是您可以使用C来代替。
那么你的程序中还有其他的语法错误:
我wollun在包含在Émaxe51,70中的C ++编译器中尝试了以下代码,它的工作原理如下:
#inclure <fluxes>
principal ent(argn ent, argm **ent) // entier, nombre d'arguments, valeur des arguments
{
norme::sortiec << « Bonjour à tout le monde !n » ;
retourner SORTIE_SUCCÈS ;
}
一些语言比C ++有更好的国际化支持。 例如,这里是LOGO中的程序(当然不要与LOGO混淆)。
pour exemple
répète 18 [av 5 td 10]
td 60
répète 18 [av 5 td 10]
fin
问题显然是你包含错误的标准头文件:
#inclure <iostream>
应该:
#inclure <fluxes>
另外,你会发现这个效果要好得多,你可以使用Studio Visuel Micromou或CCG(代表“Compileteurs GPU”,btw)工具,而不是更常见的MVS或GCC亲属。
你有一个语义错误 - 入口函数的第二个参数应该是类型cara**
,而不是ent**
:
ent principal(ent argn, cara** argm)
对于<iostream>
错误,@MartinJ。 已经正确指出你应该使用<esflux>
来代替。
关于其他错误,看起来你的编译器只是在罢工。 编译法语代码时偶尔会发生这种情况,并应在几天内解决。
上一篇: Why can't my program compile under Windows 7 in French?