c++ - nasales - pariseando
¿Por qué mi programa no puede compilar en Windows 7 en francés? (15)
Estoy ejecutando Windows 7 French y estoy tratando de compilar este programa realmente básico, pero Visual Studio se muestra obstinado y se niega a cumplir. También intenté compilarlo con GCC 4.7 y Clang trunk en Coliru y obtengo más o menos los mismos errores (la salida está por debajo del código), aunque creo que Coliru se ejecuta en un sistema operativo en inglés, por lo que no esperaría que funcionara de todos modos. .
¿Qué estoy haciendo mal? ¿Y cómo puedo arreglarlo?
Código
#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;
}
Salida
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
^
Estoy tratando de compilar este programa realmente básico .
Este no es un programa BÁSICO, por lo que Visual Studio no sabe qué hacer con él.
Además, en un sistema francés, debe pasar un programa al compilador.
Tiene un error semántico: el segundo argumento de la función de entrada debe ser de tipo
cara**
, noent**
:ent principal(ent argn, cara** argm)
Para el error
<iostream>
, @MartinJ. ya señalado correctamente, debe utilizar<esflux>
lugar.Con respecto a los otros errores, parece que su compilador está simplemente en huelga. Esto puede suceder ocasionalmente al compilar el código en francés, y debería solucionarse en unos pocos días.
¿Qué pasa si vuelve a intentar después de las horas de almuerzo (12-2 pm)? Además, si obtiene más de un procesador, es posible que estén en huelga. Puede recuperar su proc sin embargo con este comando (en francés) de Windows 7:
set max-working-hours-a-week = 35
Repita cuando esté atascado (¡pero no olvide bajar el número cada vez!).
Casi todo ha sido cubierto en las respuestas anteriores, pero si puedo agregar:
renvoyer SORTIE_SUCCÈS ; // correct, but bad pratice
esto está permitido, pero generalmente se prefiere lo siguiente:
capitulation ; // a better, frenchier approach
Dado que el Sr. George Bush prohibió las papas fritas en favor de las más sabrosas Liberty Fries (y las menos sabrosas pero igualmente patriotas de las Freedom Fries), otras corporaciones estadounidenses también están eliminando el apoyo a los franceses en sus productos.
Debe usar un compilador anterior a 2003 o enviar un correo electrónico a http://www.whitehouse.gov/contact/submit-questions-and-comments para preguntar si planean revertir la situación pronto.
El problema es obviamente que estás incluyendo el encabezado estándar incorrecto:
#inclure <iostream>
debiera ser:
#inclure <fluxes>
Además, encontrará que esto funciona mucho mejor si utiliza las herramientas Studio Visuel Micromou o CCG (significa "Collection de Compilateurs GPU", por cierto), en lugar de sus parientes más comunes de MVS o GCC.
En primer lugar, necesitas
#inclure <clibstd>
antes de que puedas usar SORTIE_SUCCÈS constante.
Otro problema con su código C ++ es que olvidó usar std :: lend y en su lugar usó ''/ n'' en su cadena de salida - no funcionará en código francés, obviamente, solo se permite código escrito en inglés y ruso Para hacer eso.
Aún más, usaste una sangría incorrecta (GCC en francés requiere pestañas en lugar de espacios) y la colocación de llaves (debes colocar llaves en la misma línea siempre que sea posible, no se permiten espacios entre ellas); Mantenerlos sin cambios generará errores de tiempo de ejecución en su código de "vous ne connaissez pas votre tabulation, Jacques" y "pas assez d''amour entre elogios".
Después de que cambié esas líneas, el código compilado con éxito. Todavía no se ha ejecutado, probablemente por las razones especificadas here .
Fragmento de código: http://ideone.fr/sQbL6E
Es necesario hacer referencia al preprocesador francés:
#inclure <Montebourg>
Hummm ... demasiado tarde, está en desuso. El nuevo lanzamiento estará disponible esta semana.
Hay tantos errores en su código, la mayoría de ellos ya han sido tratados en las otras respuestas. ¿Pero no sabes que los creadores de C++
diseñaron para que el código fuente del programa no se vuelva demasiado largo cuando se tradujo?
No es std::cendehors
, pero std::deh
(abreviatura de dehors ) como std::cin
traduce en std::ded
(para dedans ).
También tenga en cuenta que solía haber compiladores que no funcionaban automáticamente en /n
, por lo que es mejor usar std::findl
( fin de ligne ). Entonces debería ser así:
std::deh << "Bonjour le monde!" << std::findl;
EDIT: Lo siento, no vi otro error. La forma correcta, por supuesto, es usar guillemets como este:
std::deh << «Bonjour le monde!» << std::findl;
Hola Légèreté fait la course en orbite ,
Me gustaría enfatizar que aunque sigas todas las respuestas que se dan aquí, tu programa aún no se compilará debido a tu puntuación. Los puntos y coma están precedidos por un espacio de no apertura en francés.
Yo recomendaría lo siguiente:
#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 ;
}
Por favor, note que cambié de argn
a narg
, ya que es más natural en francés (aunque no tiene nada que ver con las notaciones húngaras).
Edición: seguido la recomendación de angew
Me doy cuenta de que esto no se aplica a esta situación en particular, pero es importante tener en cuenta el género de sus objetos al programar en francés. Hay 2 tipos de clases ( genre
) genre::masculins
y genre::féminin
Por ejemplo:
genre::masculins Hommes {}
genre::féminin Femme {}
Además, al pasar this
a otra función, la llamada a la función tiene el prefijo con la lista de parámetros en lugar del sufijo:
genre::masculins Croissant {
nul nourrir(Hommes hommes) {
hommes.(ce)manger ;
}
}
o
genre::féminin Grenouille {
nul nourrir(Hommes hommes) {
hommes.(cette)manger;
}
}
Para mayor referencia: Orden de palabras de Wikipedia
No puede utilizar palabras clave francesas en un programa C ++ (o C). Deberias codificar
#include <iostream>
// ^^^ the english word "include"
y de la misma manera
return EXIT_SUCCESS;
y del código del curso int main(int argc, char**argv)
etc ...
(Gracias por la broma de tu tonto de abril!)
Parece que se olvidó de instalar el paquete FrenChPP++
. Después de una instalación exitosa (tendrá que compilar FrenChPP++
en un compilador de c ++ estándar si no hay paquetes binarios para su sistema (en La rana no autorizada recomendamos usar g ++ para esto, pero también puede usar el clang, pero ignore las advertencias) ) deberá crear un nuevo proyecto y simplemente copiar y pegar esto en el archivo principal.fcpp
recién creado. Luego, tras la ejecución, el precompilador FrenChPP++
(que funciona de manera muy similar a la forma en que Qt maneja sus señales / mecanismo de ranura) analizará todos los archivos .fcpp
y "traducirá" el .fcpp
en .cpp
válido y luego los compilará utilizando el compilador predeterminado del sistema.
Probablemente necesite instalar el paquete de idioma francés para C ++ 11. Si no lo encuentra, intente http://www.bing.com/translator .
Muchos problemas se deben al almacenamiento en caché , pero el tuyo es uno de los otros problemas difíciles : nombrar cosas. Sí, la localización es difícil.
No mencionó qué variante de francés está utilizando, pero en el mensaje de error, creo que está utilizando "Francés (Francia)" (lo que nosotros, los usuarios de sistemas operativos civilizados, llamamos fr_FR
). La fr_FR
regional fr_FR
de MS se comporta de una manera muy extraña: las letras con acento en mayúsculas se asignan a su contraparte no acentuada (para compatibilidad con modelos de máquinas de escribir). Entonces necesitas escribir SORTIE_SUCCES
lugar de SORTIE_SUCCÈS
.
Una solución alternativa es utilizar el idioma “francés (Mónaco)” ( fr_MC
) , donde las letras con acento en mayúsculas funcionan como se espera. Desafortunadamente, la versión de Mónaco del compilador es muy costosa. También puede usar la versión canadiense francesa, belga francesa o suiza francesa, pero todas ellas requieren que envíe una fr_CA
bilingüe ( fr_CA
+ en_CA
), trilingüe ( fr_BE
+ nl_BE
+ de_BE
) o fr_CH
( fr_CH
+ it_CH
+ de_CH
+ rm_CH
) expediente. Las variantes africanas del francés están fuera porque son demasiado pobres para costear un compilador de C ++, sin embargo, podrías usar C en su lugar.
Luego hay otros errores de sintaxis en su programa:
- Se te olvidó traducir algunas palabras clave.
- Tenga en cuenta que el compilador y la documentación no siempre usan la misma traducción para la misma palabra.
- No consideraste el hecho de que los adjetivos vienen después del sustantivo en francés.
- Estás utilizando el tipo incorrecto de citas.
Intenté el siguiente código en el compilador de C ++ incluido en Émaxe 51,70, y funcionó:
#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 ;
}
Algunos lenguajes tienen mejor soporte de internacionalización que C ++. Por ejemplo, aquí hay un programa en LOGO (no debe confundirse con LOGO por supuesto).
pour exemple
répète 18 [av 5 td 10]
td 60
répète 18 [av 5 td 10]
fin