我正在运行Windows 7 French,我正在尝试编译这个非常基本的程序,但Visual Studio很顽固并且拒绝遵守.我也尝试用Coliru上的GCC 4.7和Clang trunk编译它,我得到或多或少相同的错误(输出低于代码),虽然我认为Coliru在英文操作系统上运行所以我不希望它仍然可以工作.
我究竟做错了什么?我该如何解决?
#inclureent 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^ 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 ^
Martin J... 151
问题显然是你包含了错误的标准标题:
#inclure
应该:
#inclure
此外,你会发现这更好用的是你使用Studio Visuel Micromou或CCG(代表"Collection de Compilateurs GPU",顺便说一句)工具,而不是他们更常见的MVS或GCC亲属.
问题显然是你包含了错误的标准标题:
#inclure
应该:
#inclure
此外,你会发现这更好用的是你使用Studio Visuel Micromou或CCG(代表"Collection de Compilateurs GPU",顺便说一句)工具,而不是他们更常见的MVS或GCC亲属.
你有一个语义错误 - 入口函数的第二个参数应该是类型cara**
,而不是ent**
:
ent principal(ent argn, cara** argm)
对于
错误,@ MartinJ.已经正确地指出你应该使用
.
关于其他错误,似乎你的编译器只是罢工.在编译法语代码时偶尔会发生这种情况,并且应该在几天后自行修复.
许多问题都是由缓存引起的,但是你的问题是另一种难题:命名事物.是的,本地化很难.
您没有提到您正在使用的法语版本,但是从错误消息中,我认为您正在使用"法语(法国)"(我们的文明操作系统用户称之为fr_FR
).MS的fr_FR
语言环境表现得非常奇怪:大写的重音字母映射到它们的非重音字母(为了与某些打字机模型向后兼容).所以你需要写SORTIE_SUCCES
而不是SORTIE_SUCCÈS
.
解决方法是使用"法语(摩纳哥)"(fr_MC
)语言,其中大写重音字母按预期工作.不幸的是,Monaco版本的编译器非常昂贵.您也可以使用加拿大法语,比利时法语或瑞士法语版本,但这些都要求您提交双语(fr_CA
+ en_CA
),三语(fr_BE
+ nl_BE
+ de_BE
)或四语(fr_CH
+ it_CH
+ de_CH
+ rm_CH
)源文件.非法的法语变体是因为它们太穷而无法提供C++编译器,但是你可以使用C代替.
然后程序中还有其他语法错误:
您忘记翻译某些关键字了.
请注意,编译器和文档并不总是对同一个单词使用相同的翻译.
你没有说明形容词出现在法语名词之后的事实.
您使用了错误的报价类型.
我wollun尝试了Émaxe51,70中包含的C++编译器中的以下代码,并且wollun工作:
#inclureprincipal 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
我正在尝试编译这个非常基本的程序.
这不是BASIC程序,因此Visual Studio不知道如何处理它.
此外,在法语系统上,您需要将程序传递给编译器.
你好Légèretéfaitla course en orbite,
我想强调的是,即使你按照这里给出的所有答案,你的程序仍然不会因为你的标点符号而编译.分号前面是法语中不间断的空格.
我会推荐以下内容:
#inclureent principal(ent narg, cara** marg) // entier, nombre d'arguments, valeur des arguments { std::cendehors << "Bonjour le monde !\n" ; renvoyer SORTIE_SUCCÈS ; }
请注意我换argn
到narg
的,因为它在法文中是更自然的(无关匈牙利命名法虽然)!
编辑:遵循angew的建议
几乎所有内容都包含在之前的答案中,但如果我可以添加:
renvoyer SORTIE_SUCCÈS ; // correct, but bad pratice
这是允许的证书,但通常首选以下内容:
capitulation ; // a better, frenchier approach
您需要参考法国预处理器:
#inclure
嗯...太晚了,它被弃用了.新版本将于本周发布.
我意识到这不适用于这种特殊情况,但在法语编程时要记住对象的性别很重要.有两种类(genre
)genre::masculins
和genre::féminin
例如:
genre::masculins Hommes {} genre::féminin Femme {}
此外,当传递this
给另一个函数时,函数调用前缀为参数列表而不是后缀:
genre::masculins Croissant { nul nourrir(Hommes hommes) { hommes.(ce)manger ; } }
要么
genre::féminin Grenouille { nul nourrir(Hommes hommes) { hommes.(cette)manger; } }
供进一步参考:维基百科Word Order
如果您在午餐时间(下午12点至下午2点)重试,该怎么办?此外,如果您获得超过一个处理器,他们可能会罢工.但是,您可以使用此(法语)Windows 7命令返回proc:
set max-working-hours-a-week = 35
当你被卡住时重复(但不要忘记每次降低数字!).
好像你忘了安装FrenChPP++
包.安装成功后(FrenChPP++
如果您的系统没有二进制包,则需要在标准c ++编译器上编译(我们在Unauthorized Frog中建议使用g ++,但是也可以使用clang,但忽略警告))您需要创建一个新项目,然后将其粘贴到新创建的principal.fcpp
文件中.然后在执行时,FrenChPP++
预编译器(其工作方式与Qt处理其信号/插槽机制的方式非常相似)将解析所有.fcpp
文件,并将"转换" .fcpp
为有效.cpp
,然后使用系统默认编译器编译它们.
您可能需要安装C++ 11的法语语言包.如果找不到,请尝试http://www.bing.com/translator.
您的代码中存在很多错误,其中大多数错误已在其他答案中得到解决.但是,难道你不知道C++
设计它的创建者,以便程序源代码在翻译时不会过长吗?
它不是std::cendehors
,但std::deh
(对于dehors而言)是(对于dedans)的std::cin
翻译.std::ded
还要注意曾经有过没有自动刷新的编译器\n
,因此最好使用std::findl
(fin de ligne).所以它应该是这样的:
std::deh << "Bonjour le monde!" << std::findl;
编辑:对不起,我没有发现另一个错误.正确的形式当然是使用这样的guillemets:
std::deh << «Bonjour le monde!» << std::findl;
您不能在C++(或C)程序中使用法语关键字.你应该编码
#include// ^^^ the english word "include"
同样地
return EXIT_SUCCESS;
当然代码int main(int argc, char**argv)
等......
(感谢你愚人节的笑话!)