Puerto paralelo

Estoy usando el Dev-C++ 4 y cuándo quiero compilar
y ejecutar este código:
#include <dos.h>
void main(void)
{
outport(0x378,0xFF);
exit(1);
}
Me sale el siguiente error:
c:\misdoc~1\untitl~1.cpp: In function `int main(...)':
c:\misdoc~1\untitl~1.cpp:4: implicit declaration of function `int outport(...)'
Y cuando quiero compilar este codigo:
#include <stdio.h>
#include <dos.h>
int main()
{
unsigned int __far *puntero_a_direccion;
int i;
puntero_a_direccion=(unsigned int __far *)0x00000408;
for (i=0; i<3; i++)
{
if (*puntero_a_direccion == 0)
printf("No se encontro puerto asignado a LPT%d \n", i+1);
else
printf("La direccion asignada a LPT%d es 0x%Xh\n",
i+1, *puntero_a_direccion);
puntero_a_direccion++;
}
return 0;
}
me salen los siguientes errores:
c:\misdoc~1\untitl~1.cpp: In function `int main()':
c:\misdoc~1\untitl~1.cpp:6: parse error before `*'
c:\misdoc~1\untitl~1.cpp:8: `puntero_a_direccion' undeclared (first use this function)
c:\misdoc~1\untitl~1.cpp:8: (Each undeclared identifier is reported only once
c:\misdoc~1\untitl~1.cpp:8: for each function it appears in.)
c:\misdoc~1\untitl~1.cpp:8: parse error before `*'
¿Qué es lo que hago mal?

3 respuestas

Respuesta
1
El compilador no reconoce el identificador __far como válido (de hecho no se lo que significa) e interpreta que estás declarando una variable __far como unsigned int, por tanto debería ir algo como [, ;, o ( detrás... pero nunca un *, por eso da un parse error.
Sobre el primer error, te diré que en c++ (y es así porque has utilizado como fichero fuente la extensión .cpp) es obligatorio declarar prototipos para todas las funciones que vayas a usar, antes de usarlas... si fuera C, no sería necesario, ya que implícitamente asumiría que devuelve un int (por eso te dice que asume que es int outport()) Si se trata de una función que no devuelve nada, pon en la parte de declaraciones lo siguiente:
void outport(int);
Y el error desaparecerá (o mejor, incluye el fichero de cabecera adecuado, que no se cual es, pues la función outport() no es estándar)
Respuesta
1
En el segundo programa, has de dejar un espacio antes de poner el *.
De la forma siguiente
unsigned int __far
*puntero_a_direccion;
Respuesta
Lo siento mickro no puedo ayudarte con tu pregunta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas