Comprese prima le intestazioni locali

3

Quindi ho letto su l'ordine dei tuoi include , e questo tizio ha suggerito di includere prima l'intestazione locale in modo da assicurarsi che non abbia prerequisiti. Ok, ho capito. Sono a bordo L'intera cosa di compartimentalizzazione è buona.

Ma ho questo file, file.c che include file.h , che dichiara le funzioni per salvare i file. Che passa attorno al tipo FILE* utilizzato da fopen e amici.

Se includo file.h prima di includere stdio.h , allora c'è un evidente errore di analisi quando si costruisce file.h perché non sa il tipo FILE* .

So che mi manca qualcosa di sporco semplice, ma posso formulare questo in qualcosa che Google può usare. Dovrei fare qualcosa di diverso in file.h ? È semplicemente qualcosa che deve essere incluso in un ordine specifico? Pensieri?

    
posta Philip 18.07.2012 - 19:10
fonte

1 risposta

10

Se un file di intestazione come file.h dipende da altre intestazioni come stdio.h , quindi file.h dovrebbe #include quelle intestazioni, se necessario.

Ogni file di intestazione dovrebbe tenere traccia delle proprie dipendenze e usare #include guards per impedire la traduzione multipla se viene incluso più volte:

#ifndef FILE_H
#define FILE_H

#include <stdio.h>
...
void myfunc(FILE *);
...
#endif

In questo modo l'ordine degli include semplicemente non ha importanza , il che rende la molto meno pazzesca manutenzione.

    
risposta data 18.07.2012 - 19:27
fonte

Leggi altre domande sui tag