Newsgroup: it.comp.lang.c
Titolo: DJGPP: Problemi Preliminari

Salve a tutti,
ho un piccolo problema con il DJGPP v2;
l' ho appena istallato ed ho cercato invano
di compilare il seguente programmino:
#include <dos.h>
int main(void)
{
        union REGS *rr;
        rr->h.ah = 0x00;
        rr->
h.al
 = 0x03;
        int386( 0x10, rr, rr );
     return 0;
}
Ottengo un errore: parse error before rr
Ho controllato il risultato del preprocessore,
la union REGS viene correttamente definita,
perché non è visibile in main?
Vi ringrazio in anticipo.
Giuseppe

 
  Dichiari un puntatore ad un simbolo che poi non allochi.
<code>
	#include <dos.h>
	int main(void)
	{
		union REGS rr;
		rr.h.ah=0x00;
 
rr.h.al
=0x03;
		int386(0x10,&rr,&rr);	
		return 0;
	}
</code>
ovvero:
<code>
	#include <dos.h>
	#include <stdlib.h>
	int main(void)
	{
		union REGS=*rr;
		rr=malloc(sizeof(union REGS));
		rr->h.ah=0x00;
		rr->
h.al
=0x03;
		int386(0x10,rr,rr);
		return 0;
	}
</code>
	Alla prossima,
		Marco

Marco Natoni wrote:

Si vede che sono un po' arrugginito con il C,
sono circa 4 anni che non scrivo codice C.
Purtroppo l'errore da risolvere non è
l'allocazione del puntatore (il programma
che ho presentato non è che l'ultima delle disperate
modifiche effettuate) infatti anche non utizzando
il puntatore non riesco comunque a portare a termine
la compilazione.
Il programma di partenza era:
        #include <dos.h>
        int main(void)
        {
                union REGS rr;
                rr.h.ah=0x00;
 
rr.h.al
=0x03;
                int386(0x10,&rr,&rr);
                return 0;
        }
Ciao a tutti
Giuseppe
PS X Marco
Ricordati che è molto dannoso scrivere
per molti anni solo codice Java e Visual FoxPro,
e pensare che il C è stato (dopo l'assembler
e il basic del commodore 64) il mio primo
linguaggio...
sarà l'età??????????????

         }
  L'interrupt 0x10 non e` quello per i servizi di acesso alla scheda
video? Se e` cosi`, il servizio 0x0003 che cosa fa? Sono anni
(anch'io... :) ) che non programmo piu` per DOS e mi sono dimenticato
tutto. Non e` che richiedi qualcosa che il SO non puo` elaborare?
	Alla prossima,
		Marco
PS "Java e` un buon strumento di prototipazione", questa e` una
citazione di un mio ex-collega che ho chiaramente stampata nel
cervello... ;)

video? Se e` cosi`, il servizio 0x0003 che cosa fa?
Non viene richiamato il servizio 0x03 ma 0x00 (e' ah che decide il
servizio). Con quella richiesta viene settato il video in modalita' 3h
(testo 80x25 o testo 80x43)
ciao

Scusatemi ma forse non mi sono spiegato bene:
Il mio problema non è il "cosa fa il programma";
il mio infatti non è un problema che si manifesta
a run-time (il cosa infatti non mi interessa affatto)
bensì a compile-time.
La domanda è come posso portare a termine la compilazione
senza avere l'errore: parse error before rr;
e soprattutto perchè si verifica questo errore
se il preprocessore elabora correttamente il file
dos.h e definisce pertanto in modo corretto
la union REGS???
Grazie a tutti.
A presto
Giuseppe
PS Di Java sto apprezzando l'eleganza della libreria di base
e le interessanti possibilità a run-time, anche se
alcune caratteristiche di base del linguaggio sono discutibili.
Rimpiango il Turbo C 2.0 e l'assembler 8086... bei tempi!!!

senza avere l'errore: parse error before rr;
Capisco il tuo problema pero' non saprei come risolverlo in quanto il
programma e' corretto. L'ho appena compilato con il TC++3.0 e l'unica
modifica che ho dovuto fare e' stata di cambiare int386 in int86
(l'equivalente funzione del TC++)
ciao