프랑스어로 된 Windows 7에서 프로그램을 컴파일 할 수없는 이유는 무엇입니까? [닫은]


237

Windows 7 프랑스어를 실행 중이며이 기본 프로그램을 컴파일하려고하지만 Visual Studio가 완고하고 준수하지 않습니다. 또한 Coliru 에서 GCC 4.7과 Clang 트렁크로 컴파일하려고 시도했지만 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
     ^

3
당신은 아마 문자 std::findeligne를 사용하는 대신 사용해야 합니다 \n:)
Aliou

66
그것은 4 월 1 일에 대한 농담 질문처럼 보인다 .....
Basile Starynkevitch

2
당신이 확실 iostream프랑스어 헤더의 올바른 이름입니까?
Bart van Nierop

9
문제는 선택한 언어에 있다고 생각합니다.
phoops

2
컴파일러를 쳐다 보지 마십시오. 그와 저는 프랑스어를 배우기 힘들었습니다. 우리는 최선을 다하고 있으므로 적어도 6-8 주 더 배워야합니다!
user1942027

답변:


62

많은 문제는 캐싱으로 인한 것이지만, 당신의 문제는 다른 종류의 어려운 문제 중 하나입니다 . 예, 현지화가 어렵습니다.

사용중인 프랑스어의 변형을 언급하지 않았지만 오류 메시지에서 "프랑스어 (프랑스)"(문명 OS 사용자가 호출하는 fr_FR)를 사용하고 있다고 생각합니다 . MS의 fr_FR로케일은 매우 이상한 방식으로 작동합니다. 대문자 악센트 문자는 악센트가없는 상대방에 매핑됩니다 (일부 타자기 모델과의 역 호환성을 위해). 따라서 SORTIE_SUCCES대신에 작성해야합니다 SORTIE_SUCCÈS.

해결 방법은fr_MC 대문자로 강조된 글자가 예상대로 작동 하는“프랑스어 (Monaco)”( ) 언어 를 사용하는 것 입니다. 불행히도, 컴파일러의 Monaco 버전은 매우 비쌉니다. 캐나다 프랑스어, 벨기에 프랑스어 또는 스위스 프랑스어 버전을 사용할 수도 있지만 이중 언어 ( fr_CA+ en_CA), 3 개 언어 ( 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È;
}

일부 언어는 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", btw) 도구를 사용하면 훨씬 더 효과적입니다.


5
또한 헤더 파일에«en-tête»확장자를«
.e

2
@ArlaudPierre : 확장을 사용하는 데 필요한 C 표준 라이브러리 헤더 파일을 제외하고 헤더 파일에 원하는 확장을 사용할 수 .e있습니다. 그러나 물론, 같은 표준 확장 .e, .ee, .epp자세한 내용은 ... 규칙에 따라 선호 : stackoverflow.com/questions/441568/...
마틴 J.

@MartinJ. 내가 "주의"를했을 때 반드시 의무적 인 것은 아니었다.
Pierre Arlaud

31
GNPU nestest pas UNIX.
abuzittin gillifirca

5
De Gaulle이 "Vive le logiciel libre!"를 부르는 것을 기억합니다.
Axel

111
  1. 시맨틱 오류가 있습니다. 입력 함수의 두 번째 인수는 다음이 cara**아닌 유형이어야합니다 ent**.

    ent principal(ent argn, cara** argm)
  2. 에 대한 <iostream>오류 @MartinJ. 이미 올바르게 지적 했으므로 <esflux>대신 사용해야합니다 .

  3. 다른 오류와 관련하여 컴파일러가 단순히 파업에 처한 것 같습니다. 이것은 프랑스어 코드를 컴파일 할 때 가끔 발생할 수 있으며 며칠 안에 해결해야합니다.


51

기본 프로그램 을 컴파일하려고합니다 .

이것은 기본 프로그램이 아니므로 Visual Studio는이 프로그램으로 무엇을해야할지 모릅니다.

또한 프랑스어 시스템에서는 프로그램을 컴파일러에 전달해야합니다.


6
" 프로그램 통과 "<3
Pierre Arlaud

5
그래서 당신이 말하는 것은 "Ceci n'est pas une program BASIC"입니다.
스튜어트 올슨

44

안녕하세요 Légèreté fait la course en 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È;
}

내가 변경주의하시기 바랍니다 argnnarg가 (헝가리어 표기법 생각과는 아무) 프랑스어로 자연 그대로!

편집 : angew의 추천을 따랐습니다.


35

이전 답변에서 거의 모든 내용을 다루었지만 추가 할 수있는 경우 :

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

이것은 certes가 허용되지만 일반적으로 다음이 선호됩니다.

capitulation ; // a better, frenchier approach

3
프랑스어 C에서 두 가지 의미 적으로 동일하지 않습니까?

17

프랑스어 프리 프로세서를 참조해야합니다.

#inclure <Montebourg>

흠 ... 너무 늦어서 더 이상 사용되지 않습니다. 이번 주에 새로운 릴리스가 출시 될 예정입니다.


17

나는 이것이 특정 상황에 적용되지 않는다는 것을 알고 있지만 프랑스어로 프로그래밍 할 때 객체의 성별을 명심해야합니다. 두 가지 유형의 클래스 ( 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;
    }
}

추가 참고 자료 : Wikipedia Word Order


15

점심 시간 (12-2 pm) 후에 다시 시도하면 어떻게됩니까? 또한 하나 이상의 프로세서를 확보하면 파업 상태 일 수 있습니다. 이 (프랑스어) Windows 7 명령을 사용하여 프록을 다시 가져올 수 있습니다.

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

붙어있을 때 반복하십시오 (그러나 매번 숫자를 낮추는 것을 잊지 마십시오!).


2
+1, 내가 생각하는 set pension-starting-age = 62도움도 수에 변경 될 수 있습니다 set pension-starting-age = 60... 곧
악셀

물론 연금 시작 연령도 속임수를 쓸 수 있습니다! 아봐 이제 라테? :-)
Sylvain Rodrigue

10

FrenChPP++패키지 설치를 잊어 버린 것 같습니다 . 성공적인 설치 후 ( FrenChPP++시스템에 바이너리 패키지가없는 경우 표준 c ++ 컴파일러 에서 컴파일 해야합니다 (권한이없는 개구리는 g ++을 사용하는 것이 좋지만 clang도 자유롭게 사용하지만 경고는 무시하십시오)) 새 프로젝트를 작성하고이를 새로 작성된 principal.fcpp파일에 복사하여 붙여 넣기 만하면 됩니다. 그런 다음 실행시 FrenChPP++프리 컴파일러 (Qt가 신호 / 슬롯 메커니즘을 처리하는 방식과 매우 유사하게 작동)는 모든 .fcpp파일 을 구문 분석하고 .fcpp유효한 파일로 "번역" .cpp한 다음 시스템 기본 컴파일러를 사용하여 컴파일합니다.


3
여기 링크가 있습니다 : github.com/carado/FranC
Valentin Lorentz


7

코드에 너무 많은 오류가 있으며 대부분의 오류는 이미 다른 답변에서 수정되었습니다. 그러나 C++프로그램 소스 코드가 번역 될 때 프로그램 소스 코드가 오래 걸리지 않도록 설계 한 개발자를 아십니까?

그것은 아니다 std::cendehors,하지만 std::deh(짧은 dehors 등) std::cin를 번역에 std::ded(대한 dedans ).

또한 자동으로 플러시되지 않은 컴파일러가 \n있었으므로 std::findl( fin de ligne ) 을 사용하는 것이 좋습니다 . 따라서 다음과 같아야합니다.

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

편집 : 죄송합니다, 다른 실수를 발견하지 못했습니다. 올바른 형태의 코스는 다음과 같은 기예를 사용합니다.

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

2
따옴표를 잘 발견
jwav

프로세스가 종료 될 때 해당 컴파일러가 여전히 출력을 플러시하지 않았습니까?
궤도에서 가벼움 경주

1
@LightnessRacesinOrbit : 그렇습니다. 원칙적으로는 맞습니다. 그러나 프랑스에서 플러시하면 원하지 않는 결과가 발생할 수 있으므로 프랑스어 버전의 구현 차이에주의하십시오 ( en.wikipedia.org/wiki/French_toilet ).
Axel

5

C ++ (또는 C) 프로그램에서 프랑스어 키워드를 사용할 수 없습니다. 코딩해야합니다

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

그리고 마찬가지로

 return EXIT_SUCCESS;

물론 코드 int main(int argc, char**argv) 등 ...

(만우절 농담 감사합니다!)


9
아 진짜? 과거에는 항상 나를 위해 일했습니다. 설정할 수있는 컴파일러 플래그가 있습니까?
궤도에서 가벼움 경주

아마 #define SORTIE_SUCCÈS EXIT_SUCCESS
Jerry1

1
"가장 비열한 공간 ...": 번역을 한 사람은 프랑스어를 모른다. (경험에서 : 컴파일러의 번역 된 버전을 피하십시오. 많은 기술적 용어에 대한 공식적으로 확립되고 보편적으로 합의 된 번역 이 없으며 , 번역가의 선택을 추측하기 위해 결국에는 번역가의 선택을 추측하려고합니다. 오류 메시지가 정말 의미합니다.)
James Kanze

18
@JamesKanze : 스페인어가 더 잘 작동한다고 생각하십니까? 또는?
궤도에서 가벼움 경주

2
그렇다면 C ++를 tranlaste하려는 시도가 있습니다. FrenC github.com/carado/FranC를 참조하십시오 . 많은 #define : D
Lesto

4

조지 부시 대통령은 맛이 좋은 리버티 프라이 (그리고 덜 맛있지 만 애국심이 강한 프리덤 프라이)를 위해 프렌치 프라이를 금지 한 이후 다른 미국 기업들도 프랑스 제품에 대한 지원을 철회하고 있습니다.

2003 년 이전의 컴파일러를 사용하거나 http://www.whitehouse.gov/contact/submit-questions-and-comments 로 메일을 보내 상황을 곧 되돌릴 계획인지 문의 하십시오 .


3

먼저, 당신은

#inclure <clibstd>

SORTIE_SUCCÈS 상수를 사용하기 전에.

C ++ 코드의 또 다른 문제는 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.