File #include xxx.h non trovati

  • Black
  • Avatar di Black
  • Offline
  • New Member
  • New Member
Di più
5 Anni 11 Mesi fa #1 da Black
File #include xxx.h non trovati è stato creato da Black
Buongiorno a tutto il forum,

sto realizzando un piccolo programma C per poterlo testare sulla scheda Freedom III attraverso l'ambiente MPLabX (v3.30) ed il compilatore XC8 (v1.37). Visto che parte dell'hardware della scheda viene comunque utilizzato, ho incluso la libreria di Mauro LTlib_v_4.0.3 inserendola nella directory principale del progetto ed aggiungendo i percorsi (conf, inc e src) nelle proprietà del progetto.
Ho creato inoltre un file separato .c contenente nuove funzioni ed il corrispondente file header .h.
Quello che non riesco a comprendere è il fatto che se i due file .c e .h appena creati vengono inseriti rispettivamente in LTlib_v_4.0.3\src e LTlib_v_4.0.3\inc il progetto viene compilato senza errori.
Viceversa, se i due file .c e .h vengono inseriti nella directory principale del progetto (dove c'è anche il file main.c) il compilatore genera l'errore di file non trovato.

Ho allora pensato che, anche se non specificato, la directory principale del progetto dovesse essere aggiunta anch'essa nei percorsi di ricerca nelle proprietà del progetto (come ho fatto per le tre directory LTlib_v_4.0.3\src ecc.).
Ma questo non è possibile farlo (la directory del progetto non si aggiunge fra le proprietà).

Dove sto sbagliando?

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Black
  • Avatar di Black
  • Offline
  • New Member
  • New Member
Di più
5 Anni 11 Mesi fa #2 da Black
Risposta da Black al topic File #include xxx.h non trovati
Ho scordato di dire che, ovviamente, gli #include di entrambi i file creati sono stati inseriti nel main appena sotto la riga #include <xc.h>, oltre che un #include al file .h all'interno del file .c.

Si prega Accedi o Crea un account a partecipare alla conversazione.

Di più
5 Anni 11 Mesi fa #3 da dami§*
Risposta da dami§* al topic File #include xxx.h non trovati
Per prima cosa è in genere buona regola mettere le direttive #include prima del main e di qualunque altra dichiarazione di dato o funzione (fanno eccezione le macro, a meno che non siano parametriche e non usino anch'esse delle funzioni), in questo modo è più facile evitare errori di inclusione.

Detto questo ho provato a fare più o meno come hai fatto tu:
mi restituisce lo stesso errore se scrivo #include <header.h> mentre la compilazione va a buon fine se scrive #include "header.h"
Devo dire che non ho ancora ben capito la differenza tra parentesi angolari e virgolette in fatto di inclusione dei file. Credo che le prime si usino per indicare al compilatore librerie di cui è scontato il percorso, e le altre per indicare file in cui il percorso si dà al momento della compilazione (se leggi bene l'output del compilatore noterai che una delle prime righe è qualcosa del tipo "make[2]: ingresso nella directory 'progetto'", quindi in questo caso il percorso del file sarà scontato a 'percorso progetto/header.h' per il semplice motivo che è la directory da cui viene eseguito il compilatore). Comunque su quest'ultimo punto lascio spiegazioni più dettagliate ai più esperti.

Scritto questo papiro, spero di esserti stato di aiuto.

Damiano
Ringraziano per il messaggio: Black

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Black
  • Avatar di Black
  • Offline
  • New Member
  • New Member
Di più
5 Anni 11 Mesi fa #4 da Black
Risposta da Black al topic File #include xxx.h non trovati
Ciao Damiano,

innanzi tutto grazie per la risposta.
Mi sono espresso male nel mio messaggio precedente. Come giustamente fai notare tu la direttiva #include è stata in effetti correttamente inserita prima della funzione main(). Per mia descrizione imprecisa mi riferisco al fatto che quando ho scritto che le direttive erano state inserite nel main, intendevo nel file main. Infatti ho l'abitudine, da sempre, di chiamare il file che contiene la funzione main() con lo stesso nome e spesso, come questa volta, si creano dei malintesi. All'inizio di questo file, ovviamente, compaiono tutte le direttive utilizzate.

Ho quindi provato a spostare i due file all'interno della directory principale ed a sostituire le parentesi angolari con le doppie virgolette come da te suggerito. Ed in effetti il problema era proprio questo. Ora la compilazione avviene correttamente senza alcun errore nè warning.

Grazie della "dritta" allora.
A presto

Black

Si prega Accedi o Crea un account a partecipare alla conversazione.

Moderatori: Mauro Laurenti