è possibile gestire con qualche direttiva del preprocessore il fatto che un file incluso possa non esistere????
tnx
è possibile gestire con qualche direttiva del preprocessore il fatto che un file incluso possa non esistere????
tnx
Potresti provare con la #ifndef, purché tu definisca una costante diversa per ogni file che può mancare all'appello.
Ad esempio potresti creare un header in questo modo
e nel codice inserire una define condizionata di questo tipo:codice:#define __MY_HEADER___
codice:#ifndef __MY_HEADER___ fprintf (stderr,"%s) ERRORE - header mancante\n",argv[0]); #endif
essendo file di sistema, poso provare a veder se è definita una delle costanti che definisce, giusto? mi serve proprio per assicurarmi di avere una costante, assegnandogli altrimenti un defult
Non usarne una a caso, potrebbe essere definita da qualche altra parte per un altro motivo.
Molto spesso all'inizio di un header è definita una costante apposta per fare in modo da non definire la stessa libreria tante volte in un unico programma con più sorgenti.
Secondo me dovresti usare quella costante, se c'è.
capiuto.. ma siccome a me serve in particolare una costante.... quindi mi controlo quella, il resto non serve
il problema è che trattandosi di file sorgente di linux, potrebbe non esserci su qualche macchina... e il compilatore in caso si incazza mi pare, no? Come faccio a fa sì che effettui l'inclusione solo se il file esiste... o meglio.. a catturare e gestire l'errore in caso in cui il file non esista?
parlo di errore al momento della compilazione.. trattasi di esame universitario e devo consegnare il sorgente
mmm
sono perplesso
voglio dire, prima di eseguire le #if si presume che il file sia già stato incluso
se non è stato rilevato il compilatore dovrebbe uscire con un errore e le direttive condizionali seguenti sarebbero ignorate
mi spiego con un esempio:
o no?codice:#include <unfiledisistema.h> /* se il file non viene trovato il preprocessore va in errore e le linee seguenti non sono compilate */ #ifndef _UNFILEDISISTEMA_H fprintf(stderr,"oO"); #endif //altra roba
sì appunto... quello che dico io è se esiste una direttiva che permetta din includere il file solo dopo averne veriifcato l'esuistenza... e gestire il caso contrario :Fagiano:
Penso che non abbia senso fare una cosa del genere (e che non si possa fare).
ci ho sperato... tutto quiOriginariamente inviato da oregon
Penso che non abbia senso fare una cosa del genere (e che non si possa fare).