View Full Version : [C] Accedere a strutture definite altrove
Ciao a tutti.
Ho un problema con un progetto che sto continuando per l'università. Praticamente nel Modulo precedente avevo creato una struttura che mi serviva per gestire dei file. Questa struttura a sua volta veniva manipolata da alcune funzioni create in quel Modulo. Ora che sto iniziando il nuovo Modulo devo poter accedere a quella struttura, senza però includere direttamente il file .h che ne contiene la definizione. Il professore mi ha detto che per fare questo devo usare quelle funzioni create nel modulo precedente, ma non capisco come fare di preciso. Spero di essere stato chiaro, grazie.
Ciao a tutti.
Ho un problema con un progetto che sto continuando per l'università. Praticamente nel Modulo precedente avevo creato una struttura che mi serviva per gestire dei file. Questa struttura a sua volta veniva manipolata da alcune funzioni create in quel Modulo. Ora che sto iniziando il nuovo Modulo devo poter accedere a quella struttura, senza però includere direttamente il file .h che ne contiene la definizione. Il professore mi ha detto che per fare questo devo usare quelle funzioni create nel modulo precedente, ma non capisco come fare di preciso. Spero di essere stato chiaro, grazie.Devi accedere tu direttamente ai campi della struttura o solo quelle funzioni già fatte, al loro interno, accedono alla struttura?
Nel secondo caso, ti basta richiamare quelle funzioni. Nel tuo nuovo sorgente, dichiari quelle funzioni tramite un prototipo e poi effettui il link con il vecchio modulo.
OT: Manugal, per caso sei di Roma?
Io avevo, ad esempio, nel precedente modulo una funzione chiamata OpenFile che appunto mi apriva un file, manipolava quella struttura e alla fine mi ritornava un intero che identificava quel file. Ora dovendo inserire un record nuovo in questo file, mi si chiede di settare il record corrente. Il record corrente è identificato, però da una variabile che è in quella struttura. Come faccio a modificarlo solo tramite quelle funzioni? :confused:
BountyKiller
04-05-2006, 14:15
Io avevo, ad esempio, nel precedente modulo una funzione chiamata OpenFile che appunto mi apriva un file, manipolava quella struttura e alla fine mi ritornava un intero che identificava quel file. Ora dovendo inserire un record nuovo in questo file, mi si chiede di settare il record corrente. Il record corrente è identificato, però da una variabile che è in quella struttura. Come faccio a modificarlo solo tramite quelle funzioni? :confused:
dichiara nuovamente quella funzione nel nuovo modulo con extern:
extern <tipo ritorno> <nome funzione>(<lista di tipi dei parametri>)
Ok per accedere alla funzione va bene, ma come faccio tramite questa funzione a modificare una variabile che si trova in quella struttura di cui parlavo?
BountyKiller
04-05-2006, 16:03
semplicemente chiamandola..... la struct è locale alle funzioni che la manipolano quindi le funzioni "vedono" la struttura.
OT: vicino :) e vai alla Sapienza e stai seguendo Laboratorio di Programmazione con Sterby e compagnia bella :D
nel Modulo 3 non devi accedere direttamente al vettore dei DBF: potresti farlo con extern, come ti è stato suggerito, ma mi sa tanto che ti bocciano :)
puoi/devi solamente usare le funzioni di interfaccia del Modulo 2: vedrai che hai tutto il necessario. in particolare ad es. se hai un handle valido, per ottenere il file descriptor del DBF corrispondente basta che usi la GetDBFInfo.
PS: ora si scopre che non hai capito nulla di quello che ho detto perché sei di un'altra università :D
In effetti non è che ho capito molto :D
Faccio un altro esempio. La GetDBFInfo() per esempio era una funzione che prelevava alcune informazioni dal file identificato da un certo handle (che è quell'intero che viene ritornato dalla funzione Open) e che poi, una volta lette queste informazioni riposiziona il file pointer (non uso file descriptor) alla posizione iniziale. Questa funzione mi ritorna 0 se ha effettuato tutte le operazioni in modo corretto. Visto che mi torna un intero come faccio ad accedere alle strutture dati o ad altre "risorse" che questa funzione manipola? Spero di essermi spiegato.
Grazie a tutti. Credo di aver risolto. :)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.