Я использую Windows 7 French и пытаюсь скомпилировать эту действительно простую программу, но Visual Studio упрям и отказывается подчиниться. Я также попытался скомпилировать его как с GCC 4.7, так и с Clang trunk Coliru и я получаю более или менее те же ошибки (вывод ниже кода), хотя я думаю, что 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
). МС 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.
Тогда есть другие синтаксические ошибки в вашей программе:
Я попробовал следующий код в компиляторе C ++, включенном в Åmaxe 51,70, и он заработал:
#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 (расшифровывается как «Collection de Compilateurs GPU», кстати), а не их более распространенные родственники MVS или GCC.
У вас есть семантическая ошибка — второй аргумент функции входа должен иметь тип cara**
не ent**
:
ent principal(ent argn, cara** argm)
Для <iostream>
ошибка, @MartinJ. уже правильно указал, что вы должны использовать <esflux>
вместо.
Что касается других ошибок, похоже, ваш компилятор просто бастует. Это может происходить время от времени при компиляции французского кода и должно исправить себя через несколько дней.
Я пытаюсь скомпилировать это действительно основная программа.
Это не бейсиковая программа, поэтому Visual Studio не знает, что с ней делать.
Кроме того, во французской системе вам нужно передать программу компилятору.
Привет Légèreté Fait La Course на орбите,
Я хотел бы подчеркнуть, что, несмотря на то, что вы следуете всем ответам, приведенным здесь, ваша программа все равно не будет компилироваться из-за пунктуации. Точка с запятой предшествует неразрывный пробел на французском языке.
Я бы порекомендовал следующее:
#inclure <esflux>
ent principal(ent narg, cara** marg) // entier, nombre d'arguments, valeur des arguments
{
std::cendehors << "Bonjour le monde !\n" ;
renvoyer SORTIE_SUCCÈS ;
}
Пожалуйста, обратите внимание, что я изменился argn
в narg
, поскольку это более естественно на французском языке (не имеет никакого отношения к венгерским примечаниям все же)!
Изменить: следуя рекомендации ангела
Почти все было рассмотрено в предыдущих ответах, но если я могу добавить:
renvoyer SORTIE_SUCCÈS ; // correct, but bad pratice
это Certes разрешено, но обычно предпочтительнее следующее:
capitulation ; // a better, frenchier approach
Вам нужно сослаться на французский препроцессор:
#inclure <Montebourg>
хммм … слишком поздно, это устарело. Новый релиз будет доступен на этой неделе.
Я понимаю, что это не относится к данной конкретной ситуации, но важно иметь в виду пол ваших объектов при программировании на французском языке. Есть 2 типа классов (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;
}
}
Для дальнейшего использования: Википедия Порядок слов