Newsgroup: it.comp.lang.c
Titolo: Domanda su #Include

Ciao a tutti.
Mi e' balenata in testa l'idea di crearmi una libreria di funzioni. Fino ad
ora, per quel poco di C che mastico, ho sempre scritto tutto il codice in un
unico file sorgente. Se sposto le funzioni che voglio utilizzare in piu'
programmi in un altro sorgente, senza dover cercarmele una per una in files
sparsi e lavorare di copia-incolla, non funziona piu' nulla. Ovvio, direte
voi: bisogna avvertire il compilatore che le funzioni dichiarate sono al di
fuori. Ho fatto come per le funzioni standard, cioe' ho dichiarato in un
file (Statistica.h)  la funzione da includere (Es. float media (float
dati[],int elementi )) e ho riportato nel mio sorgente principale la
direttiva:
#Include "Statistica.h"
Non va un tubo.
Vi scongiuro, pieta', aiutatemi (e quant'altro).
Vostro pio devoto
Igor Rossetti

 wrote in message
YAE04.208$Ip3....@typhoon.libero.it...

Se hai piu' files ".c" deviare un progetto.
Open project...etc,etc
Devi specificare il path del tuo .h se diverso da quello del tuo .exe
zag...@libero.it

Vi scongiuro, pieta', aiutatemi (e quant'altro).
La prima cosa da fare e' scrivere #include con la "I" minuscola. Se questo non 
risolve scrivi ancora nel NG con qualche dettaglio in piu' (es. non compila -> 
magari non trova il file "statistica.h", non linka -> non trova la libreria o 
il file oggetto per "statistica.c").

 #Include "Statistica.h"
Non è sufficiente. Devi anche avvertire il linker che tali funzioni si
trovano nella tua libreria.
EMG

 Vi scongiuro, pieta', aiutatemi (e quant'altro).


Forse dico una castroneria... correggetemi se sbaglio:
Non è che sul file di codice deve scrivere Extern miafunzione(), la quale si
trova nella libreria creata?

Ciao.
Non ci siamo con questo #Include
Vengo al dunque
**
File File1.cpp
#include <stdio.h>
#include "proj0003.h"
int main (void)
 {
  extern int cubo( int nums);
  int result;
  int nums;
  scanf (" %d", &nums);
  result = cubo( nums ) ;
  printf("IL cubo di %d vale %d \n", nums, result);
  return(0);
}
**
file proj0003.cpp
int cubo(int nums)
{
int risultato;
risultato=nums *nums *nums;
return risultato;
}
**
File proj0003.h
int cubo(int nums);
Ebbene, non funzia. L'errore e' il seguente:
Undefined symbol cubo(int) in module file1.cpp
Tutti i file si trovano nella medesima directory.
Se fondo i due sorgenti .cpp in un solo tutto va a gonfie vele.
Non so piu' cosa fare, grazie a chiunque mi aiutera'.
Igor Rossetti

#include "drive:\pathcompleta\tuofile"
Le informazioni che ho reperito mi indicano univocamente che l'header tra
virgolette e' sinonimo di "cerca dove c'e' il sorgente".
Comunque ho postato un piccolo esempio per darvi una traccia in piu'.
Grazie ancora.
Igor Rossetti

 
Hai due possibilità:
1- usare l'header ed eliminare "extern.." come sopra.
2-eliminare l'header e prima del main mettere la riga "extern..."
Credo tu abbia bisogno di un libro di C :-)
J

 trova nella libreria creata?
Non č necessario. Le funzioni sono pubbliche per default.
EMG

 Igor Rossetti
Dunque:
quando suddividi il tuo programma su piu file devi aprire un progetto.
Poi aggiungi al tuo progetto tutti i file .c o .cpp che comprende il tuo
programma.
Se tu hai un file 'prova.c' (contenente funzioni) puoi dichiararne i
prototipi esternamente in un file 'prova.h'  aggiungendo la linea di comando
#include "prova.h" nel file prova.c.

Credo tu abbia bisogno di un libro di C :-)
Grazie, difatti sul libro che ho io (non lo schildt ) la procedura di
costruzione dell' exe e' spiegata (con un diagramma a blocchi), solo che
stupidamente l'avevo praticamente sorvolata (visto che non mi interessava,
al momento).
Grazie di cuore a tutti.
Igor Rossetti