[RISOLTO] multifile programs

di il
15 risposte

[RISOLTO] multifile programs

Salve,
io sto usando Geany su linux e vorrei fare un programma con C che usa due funzioni, ciascuna definita in un file di tipo <nomefile>.c.
Per esempio, su un file ci ho messo il main:

#include <stdio.h>
extern void output(void);
 main()
{
	
	output();
}  
e sull'altro la funzione output che viene chiamata dal primo:
extern void output(void)
{
	printf("Yeahhhh");
	return ;
}
Sto usando un manuale ma gli how-to-do sono riferiti al programma Turboc++, mentre io ho Geany. Ora cosa dovrei fare? forse dovrei premere il comando "Lint"?

15 Risposte

  • Re: [RISOLTO] multifile programs

    Extern non va nel file dove c'è la funzione

    A questo punto compila indicando tutti i sorgenti .c
  • Re: [RISOLTO] multifile programs

    Credo debba anche inserire la dichiarazione della libreria con la direttiva:
    #include <stdio.h>
    per lo più nel file esterno nomefile.c
  • Re: [RISOLTO] multifile programs

    Corretto...
  • Re: [RISOLTO] multifile programs

    Sì, ahimè errore grossolano! ora che ho incluso
     #include<stdio.h>
    nella funzione esterna e li ho compilati tutti e due, come faccio ad eseguire?
  • Re: [RISOLTO] multifile programs

    Che domanda è? Hai sempre un solo file eseguibile alla fine
  • Re: [RISOLTO] multifile programs

    lacindy91 ha scritto:


    li ho compilati tutti e due, come faccio ad eseguire?
    Devi compilare solo il file principale.

    Se per esempio usassi il Terminale, farei (come tra l'altro ti ha sostanzialmente suggerito oregon):
    ~ $ gcc -o /tmp/file_principale /tmp/file_principale.c /tmp/output.c

    e lancerei semplicemente così:
    ~ $ /tmp/file_principale
  • Re: [RISOLTO] multifile programs

    Devi compilare solo il file principale.
    Meglio ... devi compilare tutti i file sorgenti e linkarli per ottenere un solo file eseguibile (che non importa come chiami).
  • Re: [RISOLTO] multifile programs

    oregon ha scritto:


    Meglio ... devi compilare tutti i file sorgenti e linkarli per ottenere un solo file eseguibile (che non importa come chiami).
    Hai ragione, così è preciso.
  • Re: [RISOLTO] multifile programs

    Che domanda è? Hai sempre un solo file eseguibile alla fine
    lo so che alla fine il file è uno solo, ma non ho proprio capito come si linka la funzione esterna nel file principale e quindi non riiesco nemmeno a lanciarlo.
    Sul libro che sto usando dice che alla fine mi dovrebbe comparire un file eseguibile(.exe) che a questo punto si può direttamente lanciare, ma a me questo non è successo perchè non ho capito benecosa si intende e come si fa a"collegare" le due funzioni.
  • Re: [RISOLTO] multifile programs

    E che devo salvare il progetto con estensione .ide
  • Re: [RISOLTO] multifile programs

    lacindy91 ha scritto:


    io sto usando Geany su linux

    lacindy91 ha scritto:


    ..mi dovrebbe comparire un file eseguibile(.exe)
    Gli eseguibili .exe non si riferiscono a Linux, ma a Windows.

    Almeno per quel che riguarda Linux l'estensione nel nome di un file non è sempre fondamentale.
    Se dunque operi in ambiente Linux, torno a suggerirti di fare (almeno) la prova della compilazione dei sorgenti mediante Terminale con le modalità e accortezze che ti abbiamo segnalato.
  • Re: [RISOLTO] multifile programs

    Grazie dell'info, nemmeno ci avevo mai pensato di compilare da terminale!!
    Dopo aver corretto gli errori, i due file sono così:
     #include <stdio.h>
    void output (void)
    {printf("Hello");
    	return;
    }
    
    e il principale
    #include <stdio.h>
     void output(void);
    
    
     int main()
     {
    	 output();
    	 return 1;
     }
    
    la compilazione l'ho fatta sia con Geany che con il terminale usando i comandi che mi avete suggerito ,ed è andata a buon fine perchè il terminale non mi ha dato messaggi d'errore, ma ora come faccio a linkarli?
    Grazie mille comunque
  • Re: [RISOLTO] multifile programs

    Meglio ... devi compilare tutti i file sorgenti e linkarli per ottenere un solo file eseguibile (che non importa come chiami).
    
    Come faccio a linkarli per ottenere un solo file eseguibile?
  • Re: [RISOLTO] multifile programs

    Ho risolto. Se volete sapere sapere come, ecco:
    1) aperto il terminale e mi sono messa nella cartella di lavoro
    2) ho digitato il seguente comando: "gcc -o file3 file1.c file2.c", dove file1.c e file2.c sono i file da linkare e file3 è l'eseguibile che va a creare.
    3) il file3 eseguibile che ora è stato creato per via delle impostazioni di default si può eseguire solo da root, quindi:
    4) l'ho lanciato da superutente, sempre da terminale
    5)che bello funziona!
    Grazie
Devi accedere o registrarti per scrivere nel forum
15 risposte