PDA

View Full Version : Puntatori far e huge in C e GCC...Possibile?


AnonimoVeneziano
12-01-2003, 12:46
Ciao , ho un problema con i puntatori HUGE e FAR in GCC , sono relativamente nuovo al mondo del C, e stavo giocherellando coi puntatori , in particolare nella trasformazione degli indirizzi Seg:off in indirizzi normalizzati con questo codice :




#include <stdio.h>
#include <dos.h>
int main();

int main() {
char far *cfPtr;
char huge *chPtr;
chPtr = (char huge *)(((long)FP_SEG(cfPtr)) << 16)+
(((long)(FP_OFF(cfPtr) >> 4)) << 16)+(FP_OFF(cfPtr) & 0xF);

}



Mi da diversi errori , all' inizio mi da che non trova la libreria "dos.h" (ma è una cosa esclusiva di Windows? :confused: ) Poi ho provato a toglierlo #include <dos.h> (e ovviamente sapevo che non si sarebbe compilato nulla perchè MK_FP FP_SEG e FP_OFF sono elementi di <dos.h> ma la cosa che mi ha lasciato un po' strano è che non mi compila a causa di char far *cfPtr e char huge *chPtr , se tolgo "far" si compila :confused: ho provato a scambiare huge ma mi da sempre lo stesso errore , ovvero "Syntax error before '*'"

Qualcuno mi sa dire perchè??

Ciao

ilsensine
12-01-2003, 13:04
Perchè mi risulta che il gcc produca solo codice a 32 bit; i puntatori "far" sono un mostruoso ricordo delle modalità a 16 bit.

AnonimoVeneziano
12-01-2003, 13:21
Originally posted by "ilsensine"

Perchè mi risulta che il gcc produca solo codice a 32 bit; i puntatori "far" sono un mostruoso ricordo delle modalità a 16 bit.

Ah ecco, si spiega tutto :D

Quindi far e huge ora sono in disuso, giusto? Quindi basta che dichiaro il puntatore normalmente e via.

Un altra cosa, e per le macro contenute in "dos.h" ? in GCC non c'è questa libreria?

Grazie ilsensine

CIao

ilsensine
12-01-2003, 15:05
Non mi risulta, ma potrei sbagliarmi.

AnonimoVeneziano
12-01-2003, 15:10
Ho fatto una ricerchina su google e mi ha portato alla conclusione che in linux dos.h non si usa, perchè dappertutto dice che non è inserita, grazie :)
Ciao

cionci
12-01-2003, 15:59
Ad occhio in dos.h c'erano le primitive e le strutture del sistema operativo...quelle di Linux dovrebbero essere tutti gli include sys/*.h :)