¿Por qué mi programa no puede compilarse bajo Windows 7 en francés? [closed]

6 minutos de lectura

avatar de usuario
Carreras de ligereza en órbita

Estoy ejecutando Windows 7 en francés y estoy tratando de compilar este programa realmente básico, pero Visual Studio se muestra terco y se niega a cumplir. También intenté compilarlo con GCC 4.7 y Clang trunk en Colirú y obtengo más o menos los mismos errores (la salida está debajo del código), aunque creo que Coliru se ejecuta en un sistema operativo en inglés, por lo que no espero que funcione de todos modos.

¿Qué estoy haciendo mal? ¿Y cómo puedo solucionarlo?

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;
}

Producción

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
     ^

  • Probablemente deberías usar std::findeligne en lugar de usar un \n personaje 🙂

    – Aliou

    1 de abril de 2014 a las 8:31

  • Parece una pregunta de broma para el 1 de abril …..

    – Basile Starynkevitch

    1 de abril de 2014 a las 8:32

  • Está seguro iostream Cuál es el nombre correcto del encabezado en francés?

    – Bart van Nierop

    1 de abril de 2014 a las 8:36

  • Creo que el problema radica en el idioma que has elegido.

    – pup

    01/04/2014 a las 10:10

  • No menosprecies al compilador, a él y a mí nos costó mucho aprender francés. Sin embargo, estamos haciendo todo lo posible, ¡así que danos al menos 6-8 semanas más para aprender!

    – Alicia Bytes

    01/04/2014 a las 20:58

avatar de usuario
Martín j.

Obviamente, el problema es que está incluyendo el encabezado estándar incorrecto:

#inclure <iostream>

debiera ser:

#inclure <fluxes>

Además, encontrará que esto funciona mucho mejor si usa las herramientas Studio Visuel Micromou o CCG (significa “Collection de Compilateurs GPU”, por cierto), en lugar de sus parientes más comunes MVS o GCC.

  • También tenga cuidado de dar a sus archivos de encabezado la extensión «.e» para «en-tête»

    – Pierre Arlaud

    1 de abril de 2014 a las 9:07

  • @ArlaudPierre: resulta que puede usar la extensión que desee para sus archivos de encabezado, excepto los archivos de encabezado de biblioteca estándar C que se requieren para usar el .e extensión. Pero, por supuesto, las extensiones estándar como .e, .ee, .epp son preferidos por convención… Para más detalles: stackoverflow.com/questions/441568/…

    – Martín J.

    1 de abril de 2014 a las 9:35

  • @MartinJ. Cierto, aunque no quise decir que era obligatorio cuando dije “ten cuidado”.

    – Pierre Arlaud

    1 de abril de 2014 a las 9:40

  • GNPU n’est pas UNIX.

    – abuzittin gillifirca

    01/04/2014 a las 12:36


  • Recuerdo a De Gaulle gritando “¡Vive le logiciel libre!”…

    – Axel

    01/04/2014 a las 17:19

  1. Tiene un error semántico: el segundo argumento de la función de entrada debe ser del tipo cara**no ent**:

    ent principal(ent argn, cara** argm)
    
  2. Para el <iostream> error, @MartinJ. ya señaló correctamente que debería estar usando <esflux> en cambio.

  3. Con respecto a los otros errores, parece que su compilador simplemente está en huelga. Esto puede suceder ocasionalmente al compilar código en francés y debería solucionarse en unos días.

avatar de usuario
Gilles ‘SO- deja de ser malvado’

Muchos problemas se deben al almacenamiento en cachépero el tuyo es uno de el otro tipo de problemas difíciles: nombrar cosas. Sí, la localización es difícil.

No mencionó qué variante de francés está usando, pero por el mensaje de error, creo que está usando “francés (Francia)” (lo que nosotros, los usuarios de sistemas operativos civilizados, llamamos fr_FR). MS fr_FR locale se comporta de una manera muy extraña: las letras mayúsculas acentuadas se asignan a su contraparte sin acento (para compatibilidad con versiones anteriores de algunos modelos de máquinas de escribir). Así que tienes que escribir SORTIE_SUCCES en vez de SORTIE_SUCCÈS.

Una solución es usar el “francés (Mónaco)” (fr_MC) idioma, donde las letras mayúsculas acentuadas funcionan como se esperaba. Desafortunadamente, la versión Mónaco del compilador es muy, muy costosa. También puede usar la versión en francés canadiense, francés belga o francés suizo, pero todas requieren que envíe una versión bilingüe (fr_CA + en_CA), trilingüe (fr_BE + nl_BE + de_BE) o cuatrilingüe (fr_CH + it_CH + de_CH + rm_CH) archivo fuente. Las variantes africanas del francés están descartadas porque son demasiado pobres para permitirse un compilador de C++, sin embargo, podría usar C en su lugar.

Luego hay otros errores de sintaxis en su programa:

  • Olvidaste 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 tomaste en cuenta el hecho de que los adjetivos van después del sustantivo en francés.
  • Estás usando el tipo incorrecto de comillas.

Probé 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 confundir 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

Estoy tratando de compilar esto realmente programa basico.

Este no es un programa BASIC, por lo que Visual Studio no sabe qué hacer con él.

Además, en un sistema francés, debe pasar un programa al compilador.

avatar de usuario
pierre arlaud

Hola Légèreté fait la course en orbite,

Me gustaría enfatizar que aunque siga todas las respuestas dadas aquí, su programa aún no se compilará debido a su puntuación. Los puntos y comas están precedidos por un espacio de no separación en francés.

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 ;
}

Tenga en cuenta que cambié argn a nargya que es más natural en francés (aunque no tiene nada que ver con las notaciones húngaras)!

Editar: siguió la recomendación de angew

avatar de usuario
jwav

Prácticamente todo se ha cubierto en las respuestas anteriores, pero si puedo agregar:

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

esto es certificados permitido, pero generalmente se prefiere lo siguiente:

capitulation ; // a better, frenchier approach

avatar de usuario
pmartin

Debe hacer referencia al preprocesador francés:

#inclure <Montebourg>

hummm… demasiado tarde, está en desuso. El nuevo lanzamiento estará disponible esta semana.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad