View Full Version : [C] include "nome_file.c"
gianni.anz
22-09-2008, 21:40
Ciao ragazzi, ho un piccolo problema:
Non capisco!! Devo fare un piccolo prg,. in C. Bene, ho deciso di spezzarlo in tre parti. Nella prima parte ho il main, nella seconda ho il B e nella terza ho il prog C. Il main chiama il prg B. ok! il B e il main devono chiamare il C.
problema
# include "C.c" lo devo inserire nel main e nel B? o basto solo inserirlo nel main e nel B il riconoscimento è automatico? Oppure, se lo chiamo in B, lo posso anche chiudere, in qualche modo, in modo tale che sia sempre disponibile anche per altri prog?
Grazie
non penso si possano includere file .c puoi al limite includere file .h dove sono presenti funzioni c e chiamare nel tuo programma codeste funzioni.. ciao
sebaldar
22-09-2008, 22:17
in linea di principio la direttiva del preprocessore #include sostituisce pari pari a questa riga il contenuto del file specificato, non importa di che file si tratti, in pratica viene utilizzato principalmente per includere i file header, quei file che contengano le intestazioni delle funzioni.
Dovresti riguardarti i primi capitoli del testo che stai utilizzato e comprendere la differenza tra file sorgente e file header che in C e C++ ha grande importanza.
ciao
sergio
gianni.anz
22-09-2008, 22:18
ndakota
fammi capire. Io dovrei chiamare in file .h all'interno del quale ci sono tutte le procedure che mi necessitano? quindi, nel file B e main mi chiamo il file .h e la procedura interessata? Ma gli .h non sono solo dei prototipi? quindi non posso creare in essi una procedura?
gianni.anz
22-09-2008, 22:22
sebaldar
Grazie Sergio. Mi hai 'tirato carne' insomma:p :D perchè non ho studiato!!
esatto una situazione del genere.
file funzione.h
#include <stdio.h>
void stampa(void)
{
printf("ciao");
}
file main.c
#include "funzione.h"
int main(void)
{
stampa();
return 0;
}
gianni.anz
23-09-2008, 08:17
Ok ndakota
re-imposto tutto e seguo il tuo suggerimento, min sembra la cosa più logica da fare.
grazie
esatto una situazione del genere.
file funzione.h
#include <stdio.h>
void stampa(void)
{
printf("ciao");
}
file main.c
#include "funzione.h"
int main(void)
{
stampa();
return 0;
}
Questo non va bene. Solitamente non bisogna includere l'implementazione nel file .h, ma solo le dichiarazioni delle funzioni. Allora poteva includere anche il file .c ;)
La forma corretta è:
file funzione.h
#ifndef __FUNZIONE_H__
#define __FUNZIONE_H__
void stampa(void);
#endif
file funzione.c
#include "funzione.h"
#include <stdio.h>
void stampa(void)
{
printf("ciao");
}
file main.c
#include "funzione.h"
int main(void)
{
stampa();
return 0;
}
ops sorry non lo sapevo a scuola mi hanno fatto sempre fare in quel modo :cry: :cry:
DanieleC88
23-09-2008, 17:59
ops sorry non lo sapevo a scuola mi hanno fatto sempre fare in quel modo :cry: :cry:
Malissimo! Metti questo caso: hai main.c, file1.c e header.h. Utilizzando quel metodo, definiamo in header.h:
int f(int x)
{
return (2 * x) + 3;
}
E in main.c e file1.c lo includiamo:
#include "header.h"
/* ... */
Che succede se lanci gcc -W -Wall main.c file1.c -o ./eseguibile?
/tmp/ccgO8xPX.o: In function `f':
file1.c:(.text+0x0): multiple definition of `f'
/tmp/cc8g7N9D.o:main.c:(.text+0x0): first defined here
E questo è ciò che succede con due file quasi vuoti. Pensa su progetti grossi... :Prrr:
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.