Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [C] Dividere un programma in due file

    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???

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254

    Re: [C] Dividere un programma in due file

    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???
    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");
    }
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    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");
    }
    le due funzioni devono essere compilate separatamente???
    un'altra soluzione nn è quelle salvare il file con le funzioni con estensione ".h" e includerlo nel main???

  4. #4
    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

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Originariamente inviato da Mercurial
    le due funzioni devono essere compilate separatamente???
    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
    un'altra soluzione nn è quelle salvare il file con le funzioni con estensione ".h" e includerlo nel main???
    Tecnicamente è possibile ma non è quello il modo concettualmente corretto di usare i file di header.
    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)
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  6. #6
    ok,grazie per il chiarimento e per l'aiuto che mi avete fornito

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.