Windows 7でプログラムをフランス語でコンパイルできないのはなぜですか?[閉まっている]


237

私はWindows 7フランス語を実行していて、この本当に基本的なプログラムをコンパイルしようとしていますが、Visual Studioは頑固で、準拠することを拒否しています。また、Coliruで GCC 4.7とClangトランクの両方でコンパイルしてみたところ、多かれ少なかれ同じエラーが発生しました(出力はコードの下にあります)。 。

何が悪いのですか?そして、どうすれば修正できますか?

コード

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

3
おそらく文字std::findeligneを使用する代わりに使用する必要があります\n:)
Aliou

66
4月1日の冗談の質問のようです.....
Basile Starynkevitch 2014

2
あなたは確信しているiostream、フランスのヘッダの正しい名前ですか?
Bart van Nierop、2014

9
問題はあなたが選んだ言語にあると思います。
phoops 2014

2
コンパイラを見下ろさないでください。彼も私もフランス語を学ぶのに苦労しました。ただし、最善を尽くしていますので、少なくとも6週間から8週間は学習してください。
user1942027 2014

回答:


62

多くの問題の原因はキャッシングですが、あなたの問題は他の難しい問題の 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を使用することもできます。

次に、プログラムに他の構文エラーがあります。

  • 一部のキーワードを翻訳するのを忘れました。
  • コンパイラとドキュメントが同じ単語に対して同じ翻訳を常に使用するとは限らないことに注意してください。
  • あなたは形容詞がフランス語の名詞の後に来るという事実を説明しませんでした。
  • 間違ったタイプの引用符を使用しています。

私はエマックス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È;
}

一部の言語は、C ++よりも優れた国際化サポートを備えています。たとえば、ここにLOGOのプログラムがあります(もちろん、LOGOと混同しないでください)。

pour exemple
  répète 18 [av 5 td 10]
  td 60
  répète 18 [av 5 td 10]
fin

151

問題は明らかに、間違った標準ヘッダーを含めていることです。

#inclure <iostream>

でなければなりません:

#inclure <fluxes>

また、これは、より一般的なMVSまたはGCCの親戚ではなく、Studio Visuel MicromouまたはCCG(「Collection de Compilateurs GPU」の略)ツールを使用した方がはるかにうまく機能することがわかります。


5
また、あなたのヘッダは延長«.E»«エンテット»のためのファイルを提供するように注意してください
ピエールArlaud

2
@ArlaudPierre:拡張子の使用に必要なC-standard-library-headerファイルを除いて、ヘッダーファイルには任意の拡張子を使用できることがわかります.e。しかし、もちろん、などの標準的な拡張は.e.ee.epp慣例によって好まれる...詳細は:stackoverflow.com/questions/441568/...
マーティン・J.

@MartinJ。そうです、「気を付けて」と言ったとき、それが必須であるという意味ではありませんでした。
Pierre Arlaud、2014

31
GNPU n'est pas UNIX。
abuzittin gillifirca 2014

5
De Gaulleが「Vive le logiciel libre!」と呼びかけたことを覚えています...
Axel 14

111
  1. セマンティックエラーが発生しました-エントリ関数の2番目の引数は次の型cara**ではありませんent**

    ent principal(ent argn, cara** argm)
  2. <iostream>エラーについては、@ MartinJ。あなたは<esflux>代わりにあなたが使うべきであるとすでに正しく指摘しました。

  3. その他のエラーに関しては、コンパイラがストライキを起こしているようです。これは、フランスのコードをコンパイルするときに時々発生する可能性があり、数日で自動的に修正されるはずです。


51

私はこの本当に基本的なプログラムをコンパイルしようとしています。

これはBASICプログラムではないので、Visual Studioはそれをどうするかわかりません。

また、フランス語のシステムでは、プログラムをコンパイラに渡す必要があります。


6
プログラムに合格する」<3
ピエール・アルロー14

5
つまり、「Ceci n'est pas une program BASIC」です。
スチュアートオルセン2014

44

こんにちはLégèretéfaitがラもちろんエンorbite

ここで与えられたすべての回答に従っても、句読点のためにプログラムがコンパイルされないことを強調したいと思います。セミコロンの前にはフランス語で改行しないスペースがあります。

私は以下をお勧めします:

#inclure <esflux>

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

フランス語でより自然になったargnためnarg、私がに変更したことに注意してください(ただし、ハンガリー語の表記とは関係ありません)。

編集:angewの推奨に従いました


35

ほぼすべてが前の回答でカバーされていましたが、もし私が追加する場合:

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

これは許可された証明書ですが、通常は以下が推奨されます。

capitulation ; // a better, frenchier approach

3
フランス語のCでは2つは意味的に同等ではありませんか?

17

フランスのプリプロセッサを参照する必要があります。

#inclure <Montebourg>

うーん...遅すぎる、それは非推奨です。新しいリリースは今週ご利用いただけます。


17

これはこの特定の状況には当てはまりませんが、フランス語でプログラミングするときはオブジェクトの性別を覚えておくことは重要です。クラスには2つのタイプ(genregenre::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;
    }
}

詳細については、Wikipediaの語順


15

ランチタイム(12-2 pm)後に再試行するとどうなりますか?また、1つ以上のプロセッサを取得した場合は、ストライキが発生している可能性があります。ただし、次の(フランス語)Windows 7コマンドを使用すると、プロシージャを元に戻すことができます。

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

行き詰まったときに繰り返します(ただし、毎回数値を下げることを忘れないでください!)。


2
+1、set pension-starting-age = 62また役立つと思いますが、set pension-starting-age = 60すぐに変わるかもしれません...
Axel

もちろん、年金開始年齢もトリックを行うことができます!Oùavais-je latête?:-)
シルヴァン

10

FrenChPP++パッケージをインストールするのを忘れたようです。インストールが成功した後(FrenChPP++システムにバイナリパッケージがない場合は、標準のc ++コンパイラでコンパイルする必要があります(Unauthorized Frogでは、g ++を使用することをお勧めしますが、clangを使用してもかまいませんが、警告は無視してください)。新しいプロジェクトを作成し、これをコピーして新しく作成したprincipal.fcppファイルに貼り付ける必要があります。次に、実行時にFrenChPP++プリコンパイラー(Qtがシグナル/スロットメカニズムを処理する方法と非常によく似た動作)がすべての.fcppファイルを解析し、.fcpp有効なファイルに「変換」.cppして、システムのデフォルトコンパイラーを使用してコンパイルします。


3
こちらがリンクです:github.com/carado/FranC
Valentin Lorentz 14


7

コードには非常に多くのエラーがあり、それらのほとんどはすでに他の回答で対処されています。しかしC++、プログラムのソースコードが翻訳されたときに過度に長くならないように設計者がそれを設計したことをご存知ですか?

そうではありませんstd::cendehorsが、std::deh(のための短いdehorsとして)std::cinに変換std::ded(用dedans)。

また、以前は自動的にフラッシュされなかったコンパイラがあったため、使用することをお勧め\nしますstd::findlfin de ligne)。したがって、次のようになります。

   std::deh << "Bonjour le monde!" << std::findl; 

編集:申し訳ありませんが、私は別の間違いを見つけていませんでした。もちろん、正しい形式は次のようなギレメットを使用しています。

   std::deh << «Bonjour le monde << std::findl; 

2
引用符が
見つかる

プロセスが終了したとき、それらのコンパイラはまだ出力をフラッシュする必要がありませんでしたか?
2014

1
@LightnessRacesinOrbit:はい、原則としてあなたは正しいですが、フランスでのフラッシュは望ましくない結果を引き起こす可能性があるため(en.wikipedia.org/wiki/French_toilet)、フランス語バージョンでの実装の違いに注意してください。
アクセル

5

C ++(またはC)プログラムではフランス語のキーワードを使用できません。あなたがコーディングする必要があります

 #include <iostream>
 //  ^^^  the english word "include" 

同様に

 return EXIT_SUCCESS;

そしてもちろんコードint main(int argc, char**argv) など...

(エイプリルフールのジョークをありがとう!)


9
まあ、本当に?それは過去に私のために常に働いていました。設定できるコンパイラフラグはありますか?
オービットのライトネスレース2014年

たぶん#defineSORTIE_SUCCÈSEXIT_SUCCESS
Jerry1

1
「il est manquant espace ...」:翻訳をした人は誰もフランス語を知りません。(経験から:コンパイラーの翻訳バージョンは避けてください。多くの専門用語については正式に確立され、普遍的に合意された翻訳はありません。最終的には、翻訳者の選択を推測して、エラーメッセージは本当に意味します。)
James Kanze 2014

18
@JamesKanze:では、スペイン語の方がうまくいくと思いますか?それとも?
2014

2
それでは、C ++をトランラストする試みがあります。FrenCgithub.com / carado /FranCを参照してください。#define:D
Lesto

4

ジョージブッシュ氏がフレンチフライを禁止し、より美味しいリバティフライ(および味は劣るが愛国心が強いフリーダムフライ)を支持したため、他のアメリカ企業も自社製品でのフランス語のサポートを削除しています。

2003年より前のコンパイラを使用するか、http://www.whitehouse.gov/contact/submit-questions-and-commentsにメールを送信して、すぐに状況を元に戻す予定があるかどうかを尋ねる必要があります。


3

まず、する必要があります

#inclure <clibstd>

SORTIE_SUCCÈS定数を使用できるようになる前。

C ++コードのもう1つの問題は、std :: lendを使用するのを忘れて、代わりに出力文字列で '\ n'を使用したことです-フランス語のコードでは機能しません。明らかに、英語とロシア語で書かれたコードしか使用できませんそれをするために。

さらに、間違ったインデント(フランス語のGCCではスペースではなくタブが必要)と中括弧の配置(可能な限り同じ行に中括弧を配置する必要があり、間にスペースを入れることはできません)。それらを変更しないでおくと、コードに「vous ne connaissez pas votre tabulation、Jacques」および「pas assez d'amour entre accolades」のランタイムエラーが生成されます。

これらの行を変更した後、コードは正常にコンパイルされました。おそらくここで指定された理由により、まだ実行されていません。

スニペット:http : //ideone.fr/sQbL6E

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.