C/Visual C - Problemas de compilación en VC++

 
Vista:

Problemas de compilación en VC++

Publicado por Juan Rafael (2 intervenciones) el 05/11/2002 21:16:40
Hola.
Estoy intentando añadir un parche al programa llamado 'Network Simulator' instalado en Windows 2000, y luego compilar con el VC++6. Esto lo realizo desde una ventana del Dos con el comando nmake.

El problema es que obtengo el mismo error en varias líneas del fichero dsscheduler.h que pertenece al parche, este error dice lo siguiente:
*../dsscheduler.h(117): error C2501: 'queue' : missing storage-class or type specifiers
* ../dsscheduler.h(117): error C2059 : syntax error: '<'
*../dsscheduler.h(117): error C2238 : unexpected tokens(s) preceding ';'

Una de las líneas donde se produce el error es la siguiente:
------------------------------
//ficheros de cabecera de dsscheduler.h
#include <queue>
#include "packet.h" // need Queue class specs
#include <math.h>

//linea donde se produce el error
queue<double> GPS;
-------------------------------

El problema puede ser debido a que el parche está pensado inicialmente para linux, por tanto el vc++ no reconoce esta declaración.
Me gustaría que me indicárais los cambios necesarios para resolver el problema.

Gracias.

Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problemas de compilación en VC++

Publicado por Alvaro (122 intervenciones) el 05/11/2002 21:57:18
Por ahora solo te puedo ayudar en lo siguiente.
El programa no encuentra la definicion de la clase queue.
debes ver la linea:
#include <queue>
y verificar que no se trata de <queue.h>

El error de sintaxis en '<' es porque al hacer la declaracion de la cola GPS esta utiliza un template (estas creando una cola de variables double). Este error se da porque queue no ha sido definido.
Suerte...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas de compilación en VC++

Publicado por Googol (255 intervenciones) el 05/11/2002 22:31:11
Prueba a cambiarlo y poner:

std::queue<double> GPS;

o, antes de la línea conflictiva:

using namespace std;

Todas las clases de la librería estandar están dentro de un namespace llamado "std". Con la primera opción (std::queue ... ) le das el namespace específico donde está. Con la segunda le dices al compilador: "si no encuentras algun tipo, buscalo, antes de darme error, en el namespace std".

La opción de Alvaro también debería funcionar (añadir el ".h" dentro del #include), pero lo que hace es eliminar el namespace completamente y a mí me gusta menos....

Suerte!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas de compilación en VC++

Publicado por Alvaro (122 intervenciones) el 06/11/2002 17:24:12
Googol.
No te entiendo.
¿ Pretendes hacer referencia a un tipo de datos (clase) que esta definida en una libreria sin utilizar el #include ?
Lo del namespace es nuevo para mi, pero creo que entiendo para que es su funcionalidad.
Sacame de una duda, si en un namespace A defino una clase aaa, en un namespace B ¿Puedo redefinir la clase aaa?
Si es así encuentro lo del namespace muy util, de otro modo, lo veo solo como una forma de agrupar objetos para mantener orden.
SUERTE y Gracias...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas de compilación en VC++

Publicado por Googol (255 intervenciones) el 06/11/2002 18:37:03
Sí, sí puedes declarar la segunda clase aaa en el namespace B.
De todas formas hay que tener cuidado con los nombres de los ficheros. Seguramente no podrías llamar "aaa.cpp" a ambos ficheros y conservarlos en ficheros diferentes, porque luego el enlazador se vuelve loco. Es una pena la verdad.

Y no, el #include lo sigues necesitando, solo que no hay que poner el ".h".
O sea, al meno según tengo entendido:

#include <queue.h>

e

#include <queue>

son diferentes. Si dejas la segunda, es necesario lo del namespace.
Si dejas la primera... en teoría no, pero no estoy seguro.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas de compilación en VC++

Publicado por Alvaro (122 intervenciones) el 06/11/2002 19:58:47
Interesante.
Es una caracteristica de C++ genérica?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas de compilación en VC++

Publicado por Googol (255 intervenciones) el 07/11/2002 13:29:02
Lo de los namespace sí.
Se especificó con el C++, pero los primeros compiladores de C++ (Turbo C++ vamos) no lo incluían porque quisieron sacar rápidamente el compilador y tuvieron que restringir el lenguaje. Al menos eso es lo que siempre he oido.

Lo que, supongo, no es genérico de C++ es el error del enlazador :-)

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar