1. ホーム
  2. c++

[解決済み】なぜ私のプログラムはWindows 7でフランス語でコンパイルできないのですか?[クローズド]

2022-04-04 10:46:49

質問

私はWindows 7 Frenchを使用しており、この本当に基本的なプログラムをコンパイルしようとしているのですが、Visual Studioが頑固で従うのを拒否しているのです。また、GCC 4.7とClang trunkの両方でコンパイルしてみました。 コリル Coliruは英語のOSで動いていると思うので、いずれにせよ動作は期待できないのですが。

私は何が間違っているのでしょうか?また、どうすれば直るのでしょうか?

コード

#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
     ^

解決方法は?

多くの問題はキャッシュに起因する の1つですが、あなたの場合は もうひとつの難題 : ネーミングのことです。そうです、ローカライズは難しいのです。

どのフランス語を使っているかは書かれていませんが、エラーメッセージからすると、「フランス語(フランス)」(文明的なOSのユーザーからは fr_FR ). MSの fr_FR ロケールは非常に奇妙な振る舞いをします。アクセント付きの大文字は、アクセントのない文字にマップされます(一部のタイプライターのモデルとの後方互換性のため)。そのため、次のように記述する必要があります。 SORTIE_SUCCES ではなく SORTIE_SUCCÈS .

回避策としては、「フランス(モナコ)」( fr_MC ) 言語 大文字のアクセント記号付き文字が期待通りに動作します。残念ながら、モナコ版のコンパイラは非常に高価です。カナダ・フランス語、ベルギー・フランス語、スイス・フランス語のバージョンを使用することもできますが、これらはすべて、バイリンガルの( fr_CA + en_CA )、三ヶ国語( fr_BE + nl_BE + de_BE )または4ヶ国語( fr_CH + it_CH + de_CH + rm_CH ) のソースファイルです。アフリカのフランス語は、貧しくてC++コンパイラが買えないのでアウトですが、代わりにCを使うことができます。

それから、あなたのプログラムには他にも構文エラーがあります。

  • キーワードの翻訳を忘れています。
  • コンパイラとドキュメントは、同じ単語に対して同じ訳語を使うとは限らないので、注意してください。
  • フランス語では形容詞が名詞の後に来ることを考慮していないのでは?
  • 引用符の種類を間違えています。

Émaxe 51,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