¿El compilador GCC es compatible con C++ clásico?

Esta pregunta está relacionada con el proceso de transferencia de un ejecutable HP-UX. En HP-UX, el ejecutable se compiló y vinculó mediante HP-UX ACC Compiler. Dado que el compilador data de 1996, no parece que sea compatible con C++ estándar (el estándar para C++ que se usa hoy). Más bien, compila en base a un estándar para C++ que HP-UX denomina C++ clásico. Me preguntaba si GCC admitía una opción para C++ clásico.

Gracias.

preguntado el 12 de junio de 12 a las 16:06

Quiere decir, ¿qué problemas de portabilidad debería esperar al pasar de HP-UX a un compilador que cumple con los estándares? ¿Qué problemas específicos del compilador debe esperar y puede abordarlos? -

1 Respuestas

No he encontrado nada de eso en los documentos de gcc, pero podría estar equivocado.

Sin embargo, puede migrar de Classic a Standard C++, utilizando las siguientes dos pautas (del Documentación HP):

(1.) Encabezados IOstream:

<iostream.h> mapas a <iostream>

<fstream.h> mapas a <fstream> y opcionalmente <iostream>

<strstream.h> mapas a <strstream>

<iomanip.h> mapas a <iomanip>

Tenga en cuenta el nuevo archivo de encabezado <iosfwd> se puede usar si solo se necesita la declaración de ostream e istream y no los operadores específicos de inserción y extracción. Esto reemplazaría los casos en los que se utilizan los siguientes:

class ostream; // replace by #include <iosfwd>
ostream& operator<<(ostream&, foo); // change based on (2) below

(2.) Mapeo de fuentes:

Haga uno (o más) de los siguientes. Estos cambios se aplican tanto a los encabezados de IOstream como a los encabezados de contenedor. Agregue la siguiente directiva de uso. Esto funcionará para -AA o -AP.

namespace std {} using namespace std;
cout << "hi guy" << endl;

Agregue declaraciones de uso específicas. Esto solo funciona para -AA.

using std::cout;
using std::endl;
cout << "hi guy" << endl;

Agregue std:: antes de cada símbolo. Esto solo funciona para -AA.

std::cout << "hi guy" << std::endl;

Respondido el 12 de junio de 12 a las 16:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.