Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

includere file di altre cartelle in c

Problemi di HTML? Di PHP, ASP, .NET, JSP, Perl, SQL, JavaScript, Visual Basic..?
Vuoi realizzare programmi in C, C++, Java, Ruby o Smalltalk, e non sai da che parte cominciare?
Entra qui e troverai le risposte!

Moderatori: Triumph Of Steel, archimede

includere file di altre cartelle in c

Postdi Tati » 19/05/06 12:38

Ciao a tutti,
se in un programma c, nel file eseguibile faccio #include di un file che si trova in un'altra directory e non posso usare path assoluti nè relativi, come faccio a farglielo trovare?
Grazie.
Tati
Newbie
 
Post: 4
Iscritto il: 19/05/06 12:18

Sponsor
 

Postdi zello » 19/05/06 13:14

non posso usare path assoluti nè relativi

E perché? Nel caso potessi farlo, ricordati di usare lo slash e non il backslash (o di raddoppiare il backslash). Cioé
Codice: Seleziona tutto
#include "zello\include\myheader.h"     //funziona su win e unix
#include "zello//include//myheader2.h" //funziona solo su windows

In alternativa (ma è sconsigliato) includi nelle direttive di compilazione un path alternativo per gli headers standard. Credo che msvc preveda /I, mentre gcc -I, ma sto andando a memoria
Codice: Seleziona tutto
#include <myheader.h>

e compili con
Codice: Seleziona tutto
cl /I zello\include mysource.c
gcc -I zello\include mysource.c
Il faut être toujours ivre. Tout est là : c'est l'unique question. Pour ne pas sentir l'horrible fardeau du Temps qui brise vos épaules et vous penche vers la terre,il faut vous enivrer sans trêve...
Avatar utente
zello
Moderatore
 
Post: 2351
Iscritto il: 06/05/02 13:44

Postdi disgrazia » 20/05/06 18:20

Zello, ho l'impressione che tu abbia inavvertitamente invertito slash e backslash, io metterei così:

Codice: Seleziona tutto
#include "zello/include/myheader.h"     //funziona su win e unix
#include "zello\\include\\myheader2.h" //funziona solo su windows


Per il resto confermo l'utilizzo di -I come flag per gcc, l'unica cosa è che mi sembra sia necessario evitare gli spazi tra il -I e il path, cioè così:
Codice: Seleziona tutto
gcc -I/home/disgrazia/include mysource.c

Personalmente tendo a preferire l'utilizzo di -I all'inserimento manuale del path nella #include. Oltretutto, usando automake la cosa è molto facile da gestire.
disgrazia
Download Admin
 
Post: 708
Iscritto il: 08/07/02 22:16

Postdi zello » 22/05/06 11:57

(oops, figuremmer**). Hai ragione, naturalmente.
Personalmente tendo a preferire l'utilizzo di -I

Molti puristi tendono ad usare le parentesi angolari solo per gli header standard.
Io tendo a creare una struttura di progetto del tipo
Codice: Seleziona tutto
<nome progetto>
    |
    - include
    - src

A quel punto, includere con -I o specificare #include "../include/myheader.h" è abbastanza equivalente.
Il faut être toujours ivre. Tout est là : c'est l'unique question. Pour ne pas sentir l'horrible fardeau du Temps qui brise vos épaules et vous penche vers la terre,il faut vous enivrer sans trêve...
Avatar utente
zello
Moderatore
 
Post: 2351
Iscritto il: 06/05/02 13:44

Postdi Tati » 22/05/06 18:57

Ho provato a fare come mi avete detto ma il risultato è lo stesso: non trova il file.
Tati
Newbie
 
Post: 4
Iscritto il: 19/05/06 12:18

Postdi zello » 23/05/06 12:04

Scusami, non potremmo andare sul pratico? Mi dici dov'è il file header (percorso assoluto, per piacere) e come lo stai includendo?
Il faut être toujours ivre. Tout est là : c'est l'unique question. Pour ne pas sentir l'horrible fardeau du Temps qui brise vos épaules et vous penche vers la terre,il faut vous enivrer sans trêve...
Avatar utente
zello
Moderatore
 
Post: 2351
Iscritto il: 06/05/02 13:44

Postdi Tati » 23/05/06 12:43

il file che cerco di compilare è TestM2.c che sitrova in /home/paoli/Desktop/DBF/Modulo2/test/TestM2.c e il file da includere è LPC_Include.h che si trova in /home/paoli/Desktop/DBF/include/LPC_Include.h.
Il File TestM2 è stato scritto dal prof e contiene #include "LPC_Include.h" e non può essere modificato. Ciao e grazie per la pazienza.
Tati
Newbie
 
Post: 4
Iscritto il: 19/05/06 12:18

Postdi archimede » 23/05/06 13:49

Tati ha scritto:Il File TestM2 è stato scritto dal prof e contiene #include "LPC_Include.h" e non può essere modificato.
In tal caso credo che dovrai mettere i due files nella stessa cartella (ma di C non so nulla, per cui aspetta un parere più illuminato).

Alessandro
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Postdi zello » 24/05/06 10:00

In tal caso credo che dovrai mettere i due files nella stessa cartella (ma di C non so nulla, per cui aspetta un parere più illuminato)

oppure un bel link simbolico.
Codice: Seleziona tutto
$ ln -s /home/paoli/Desktop/DBF/include/LPC_Include.h
  /home/paoli/Desktop/DBF/Modulo2/test/LPC_Include.h

(su unica riga di comando, ovviamente)
Il faut être toujours ivre. Tout est là : c'est l'unique question. Pour ne pas sentir l'horrible fardeau du Temps qui brise vos épaules et vous penche vers la terre,il faut vous enivrer sans trêve...
Avatar utente
zello
Moderatore
 
Post: 2351
Iscritto il: 06/05/02 13:44


Torna a Programmazione


Topic correlati a "includere file di altre cartelle in c":


Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti