[C] Utilizzo corretto degli 'include'

di il
5 risposte

[C] Utilizzo corretto degli 'include'

Ciao a tutti, avrei una domanda per quanto riguarda il corretto utilizzo della direttiva #include.
Non allego codice in quanto la mia domanda è generica e non legata ad un caso specifico. Durante un corso all'università ho realizzato alcune librerie e adesso sto facendo alcuni esercizi sfruttando le librerie create in precedenza.

Spesso mi capita di includere lo stesso header in file diversi e di ricevere l'errore per la ridefinizione di funzioni ecc... Provando a rimuovere gli include "in eccesso" ottengo comunque errori legati alla mancanza appunto degli include rimossi e quindi sono costretto a reinserirli. Generalmente risolvo con #ifndef e #define ma vorrei capire una cosa:
#ifndef e #define servono per "rattoppare" degli #include sbagliati oppure sono delle direttive che in alcuni casi sono necessarie?

Mi spiego meglio:
posso sempre rimuovere #ifndef e #define sistemando opportunamente gli #include oppure ci sono casi in cui #ifndef e #define devono essere necessariamente utilizzati?
Spero di essere stato chiaro nell'esprimere la mia domanda perchè sono un pò confuso su questa cosa.
E se #ifndef e #define non sono mai necessari, come occorre organizzarsi con più file che includono uno stesso header e generano errore (senza utilizzare #ifndef e #define)?

Un'ultima cosa: #pragma once ha la stessa funzione di #ifndefe #define?

5 Risposte

  • Re: [C] Utilizzo corretto degli 'include'

    Prima di tutto bisognerebbe capire come mai hai quegli errori e quindi vedere cosa scrivi nel codice.

    La pragma once serve proprio a poter includere solo una volta quell'include
  • Re: [C] Utilizzo corretto degli 'include'

    oregon ha scritto:


    Prima di tutto bisognerebbe capire come mai hai quegli errori e quindi vedere cosa scrivi nel codice.

    La pragma once serve proprio a poter includere solo una volta quell'include
    Innanzitutto grazie della risposta. L'errore è relativo alla ridefinizione di funzioni quando ho più header che si includono tra loro (e magari due di questi includono uno stesso header)
  • Re: [C] Utilizzo corretto degli 'include'

    La pragma once risolve e anche la ifndef ma bisogna esaminare caso per caso
  • Re: [C] Utilizzo corretto degli 'include'

    Ok grazie! Ma pragma once risolve SEMPRE problemi di questo tipo? (Chiaramente mi riferisco a problemi di ridefinizione dovuti ad #include "incauti" e non al caso in cui il programmatore da uno stesso nome a due funzioni diverse)
  • Re: [C] Utilizzo corretto degli 'include'

    Dipende da cosa fai di errato
Devi accedere o registrarti per scrivere nel forum
5 risposte