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

    [c] Programma strutturato su più file

    Salve a tutti!
    Sono un neo-aspirante programmatore e avrei qualche domanda da fare sulla programmazione in C.
    la mia domanda riguarda i file sorgente .c e i file di intestazione .h; Quando io scrivo su di un file main.c il main del programma e su un file f1.c tutte le funzioni necessarie, di seguito creo anche un file f1.h avente tutte le dichiarazioni.

    1) In f1.c molti parametri delle funzioni mi vengono considerati come errore, perciò è necessario chiamare le librerie standard anche in f1.c?

    2)Dovendo memorizzare nuovi tipi di strutture su array, è necessario specificare anche nel f1.c su quali array devo memorizzare i dati o mi basta solo nel main.c?

    3)è possibile dul file f1.h oltre alle dichiarazioni, scrivere anche i nuovi tipi di strutture?

    Se mi sono spiegato male perdonatemi ma sono ancora un principiante, perciò chiedo il vostro aiuto!

    Grazie!

  2. #2
    1) Ogni .c viene compilato "per i fatti suoi", per cui è necessario includere tutto quello che serve, senza fare affidamento sul fatto che venga incluso altrove.
    2) Chiarisci, magari postando il codice in questione...
    3) Sì, anzi è normale. In genere è proprio nei .h che si definiscono le strutture.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it L'avatar di infinitejustice
    Registrato dal
    Nov 2001
    residenza
    Barcelona
    Messaggi
    772
    Nel file .h devi inserire i prototipi di funzione ed i tipi di dato definiti da te. I prototipi vanno definiti come extern, mentre i tipi di dato dovrebbero esser accompagnati dal loro typedef. Il file .h deve esser hash protetto per evitare inclusioni multiple.

    Nel file .h non implementi nulla. E' il tuo contratto con l'esterno.

    Il file .c include il proprio file .h ed eventualmente altre librerire.
    Qui implementi tutti i prototipi che hai "promesso" nel file .h. Eventualmente, se vuoi creare variabili o funzioni che non devon esser viste all'esterno, puoi farlo definendole come static.

    Ciascuna libreria da te creata va compilata. Poi linki tutto in un unico file output.
    Live fast. Troll hard.
    Pythonist | Djangonaut | Puppeteer | DevOps | OpenStacker | Lost in malloc
    Team Lead @Gameloft Barcelona

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 © 2025 vBulletin Solutions, Inc. All rights reserved.