当前位置:  开发笔记 > 编程语言 > 正文

为什么我的程序不能在Windows 7下用法语编译?

如何解决《为什么我的程序不能在Windows7下用法语编译?》经验,为你挑选了13个好方法。

我正在运行Windows 7 French,我正在尝试编译这个非常基本的程序,但Visual Studio很顽固并且拒绝遵守.我也尝试用Coliru上的GCC 4.7和Clang trunk编译它,我得到或多或少相同的错误(输出低于代码),虽然我认为Coliru在英文操作系统上运行所以我不希望它仍然可以工作.

我究竟做错了什么?我该如何解决?

#inclure 

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 
      ^
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亲属.



1> Martin J...:

问题显然是你包含了错误的标准标题:

#inclure 

应该:

#inclure 

此外,你会发现这更好用的是你使用Studio Visuel Micromou或CCG(代表"Collection de Compilateurs GPU",顺便说一句)工具,而不是他们更常见的MVS或GCC亲属.


GNPU n'est pas UNIX.
另外要小心为头文件添加«.e»扩展名为«en-tête»
我记得De Gaulle喊出"Vive le logiciel libre!"......
@ArlaudPierre:事实证明,除了使用`.e`扩展名所需的C-standard-library-header文件外,您可以使用所需的扩展名文件扩展名.但是,当然,标准的扩展名如`.e`,`.ee`,`.epp`是惯例的首选...详情请访问:http://stackoverflow.com/questions/441568/when-can-you -omit-的文件扩展功能于一个-包括指令性

2> Reinstate Mo..:

    你有一个语义错误 - 入口函数的第二个参数应该是类型cara**,而不是ent**:

    ent principal(ent argn, cara** argm)
    

    对于错误,@ MartinJ.已经正确地指出你应该使用.

    关于其他错误,似乎你的编译器只是罢工.在编译法语代码时偶尔会发生这种情况,并且应该在几天后自行修复.



3> Gilles 'SO- ..:

许多问题都是由缓存引起的,但是你的问题是另一种难题:命名事物.是的,本地化很难.

您没有提到您正在使用的法语版本,但是从错误消息中,我认为您正在使用"法语(法国)"(我们的文明操作系统用户称之为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工作:

#inclure 

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



4> zmarties..:

我正在尝试编译这个非常基本的程序.

这不是BASIC程序,因此Visual Studio不知道如何处理它.

此外,在法语系统上,您需要将程序传递给编译器.


"通过*程序*"<3
所以你所说的是"Ceci n'est pas une program BASIC."

5> Pierre Arlau..:

你好Légèretéfaitla course en orbite,

我想强调的是,即使你按照这里给出的所有答案,你的程序仍然不会因为你的标点符号而编译.分号前面是法语中不间断的空格.

我会推荐以下内容:

#inclure 

ent principal(ent narg, cara** marg)  // entier, nombre d'arguments, valeur des arguments
{
   std::cendehors << "Bonjour le monde !\n" ;
   renvoyer SORTIE_SUCCÈS ;
}

请注意我换argnnarg的,因为它在法文中是更自然的(无关匈牙利命名法虽然)!

编辑:遵循angew的建议



6> jwav..:

几乎所有内容都包含在之前的答案中,但如果我可以添加:

renvoyer SORTIE_SUCCÈS ; // correct, but bad pratice

这是允许的证书,但通常首选以下内容:

capitulation ; // a better, frenchier approach


在法语C中不是两个语义上相同的?

7> pmartin..:

您需要参考法国预处理器:

#inclure 

嗯...太晚了,它被弃用了.新版本将于本周发布.



8> Crisfole..:

我意识到这不适用于这种特殊情况,但在法语编程时要记住对象的性别很重要.有两种类(genre)genre::masculinsgenre::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



9> Sylvain Rodr..:

如果您在午餐时间(下午12点至下午2点)重试,该怎么办?此外,如果您获得超过一个处理器,他们可能会罢工.但是,您可以使用此(法语)Windows 7命令返回proc:

set max-working-hours-a-week = 35

当你被卡住时重复(但不要忘记每次降低数字!).


+1,我认为`set pension-starting-age = 62`也可能有所帮助,可能会很快变成'养老金 - 起始年龄= 60岁'......

10> Ferenc Deak..:

好像你忘了安装FrenChPP++包.安装成功后(FrenChPP++如果您的系统没有二进制包,则需要在标准c ++编译器上编译(我们在Unauthorized Frog中建议使用g ++,但是也可以使用clang,但忽略警告))您需要创建一个新项目,然后将其粘贴到新创建的principal.fcpp文件中.然后在执行时,FrenChPP++预编译器(其工作方式与Qt处理其信号/插槽机制的方式非常相似)将解析所有.fcpp文件,并将"转换" .fcpp为有效.cpp,然后使用系统默认编译器编译它们.


这是一个链接:https://github.com/carado/FranC

11> n. 'pronouns..:

您可能需要安装C++ 11的法语语言包.如果找不到,请尝试http://www.bing.com/translator.



12> Axel..:

您的代码中存在很多错误,其中大多数错误已在其他答案中得到解决.但是,难道你不知道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; 


很好地看到了引号

13> Basile Stary..:

您不能在C++(或C)程序中使用法语关键字.你应该编码

 #include 
 //  ^^^  the english word "include" 

同样地

 return EXIT_SUCCESS;

当然代码int main(int argc, char**argv) 等......

(感谢你愚人节的笑话!)


@JamesKanze:你认为西班牙语可能会更好吗?要么?
真的吗?它过去总是对我有用.我可以设置一些编译器标志吗?
那么,有一个转移C++的尝试,请参阅FrenC https://github.com/carado/FranC,它只是很多#define:D
推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有