vorrei realizzare un programma in linguaggio C utilizzando due file:
-uno contenente le funzioni da utilizzare e l'altro contenente il main
come posso fare???
vorrei realizzare un programma in linguaggio C utilizzando due file:
-uno contenente le funzioni da utilizzare e l'altro contenente il main
come posso fare???
main.c:Originariamente inviato da Mercurial
vorrei realizzare un programma in linguaggio C utilizzando due file:
-uno contenente le funzioni da utilizzare e l'altro contenente il main
come posso fare???
codice:extern void unaFunzione (void); int main (void) { unaFunzione (); return 0; }
func.c
codice:#include <stdio.h> void unaFunzione (void) { printf ("Hello world\n"); }
le due funzioni devono essere compilate separatamente???main.c:
codice:
extern void unaFunzione (void);
int main (void)
{
unaFunzione ();
return 0;
}
func.c
codice:
#include <stdio.h>
void unaFunzione (void)
{
printf ("Hello world\n");
}
un'altra soluzione nn è quelle salvare il file con le funzioni con estensione ".h" e includerlo nel main???
Due file diversi sono due unità di compilazione diverse.
I file .h dovrebbero contenere esclusivamente le dichiarazioni, i .c solo le definizioni.
a.h:
#IFNDEF _A_H
#DEFINE _A_H
int a(int b, int c);
void b();
#ENDIF
a.c:
#include "a.h"
int a(int b, int c) {
...
}
void b() {
...
}
GreyFox (Linux registered user #435102)
greyfox.imente.org - GreyFox's shots (photo gallery)
$ cd /pub
$ more beer
Sì, ogni sorgente .c va compilato per generare il corrispondente file oggetto (.obj). È poi il linker che dovrà unire i due oggetti insieme alle eventuali librerie standard o esterne.Originariamente inviato da Mercurial
le due funzioni devono essere compilate separatamente???
Tecnicamente è possibile ma non è quello il modo concettualmente corretto di usare i file di header.Originariamente inviato da Mercurial
un'altra soluzione nn è quelle salvare il file con le funzioni con estensione ".h" e includerlo nel main???
Nei file di header non ci dovrebbero essere mai definizioni che "allocano" memoria, come definizioni di variabili o funzioni. Solo dichiarazioni di macro, strutture, prototipi di funzioni ecc...
Se un header contenesse:
int pippo; // definisce e alloca una variabile
che succede se due o più sorgenti dello stesso progetto lo includono??? Risposta: un gran casino e come si comporta il linker, dipende..... (dal linker)
ok,grazie per il chiarimento e per l'aiuto che mi avete fornito