为什么我的程序在法语下不能在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>来代替。

  • 关于其他错误,看起来你的编译器只是在罢工。 编译法语代码时偶尔会发生这种情况,并应在几天内解决。

  • 链接地址: http://www.djcxy.com/p/86297.html

    上一篇: Why can't my program compile under Windows 7 in French?

    下一篇: My C++ output is always 0