Desarrollo C++ multiplataforma usando Microsoft Visual Studio en Windows y GCC en uBuntu Linux.¿Es posible hacer que GCC compile UTF-8 con archivos fuente BOM?
En Visual Studio I pueden usar símbolos Unicode como "π" y "²" en mi código. Visual Studio siempre guarda los archivos de origen como UTF-8 con BOM (Marca de orden de bytes).
Por ejemplo:
// A = π.r²
double π = 3.14;
GCC compila felizmente estos archivos sólo si se quita la lista de materiales en primer lugar. Si no quito la lista de materiales, recibo errores como estos:
wwga_hydutils.cpp:28:9: error: stray ‘\317’ in program
wwga_hydutils.cpp:28:9: error: stray ‘\200’ in program
que me lleva a la pregunta:
¿Hay una manera de conseguir GCC para compilar archivos UTF-8 sin quitar primero la lista de materiales ?
que estoy usando:
- Windows 7
- Visual Studio 2010
y:
- Ubuntu 11.10 onírico
- GCC 4.6.1 (según lo dispuesto por apt-get install gcc)
Editar:
Como la primera comentarista señaló, mi problema era no la lista de materiales, pero teniendo caracteres no ascii fuera de las constantes de cadena. A GCC no le gustan los caracteres no ascii en los nombres de los símbolos, pero resulta que GCC es totalmente compatible con UTF-8 con BOM.
Funciona bien para mí en gcc 4.4.5, usando una cadena que contiene los dos caracteres UNICODE en su pregunta. Archivo con BOM. Además, el error que recibe no tiene nada que ver con la lista de materiales, pero parece ser que los caracteres UNICODE en cuestión están fuera de cualquier cadena (por eso se llaman _stray_.) –
@JoachimPileborg sí, los caracteres Unicode están fuera de la cadena, el "π" que estaba usando como nombre de símbolo, el "²" solo estaba en los comentarios. Cuando elimino la lista de materiales, elimina el error de la salida de la consola, pero supongo que no es garantía de que GCC esté realmente manejando a los personajes como espero. – Boinst
@JoachimPileborg, actualicé la pregunta para incluir el contexto en el que estoy usando los caracteres Unicode. – Boinst