Considera le seguenti ipotesi sulla programmazione in C (alcune delle quali vanno troppo avanti, lo confesso):
-
L'inserimento di definizioni di variabili in un file di intestazione non è corretto, poiché ogni unità di traduzione crea la propria copia dei dati. E se è
extern
e utilizzato da più di un posto, otteniamo UB. L'uso corretto è quello di dichiarare le variabili nei file di intestazione e definirli nei corrispondenti file di implementazione. -
Le macro sono in cattive condizioni e solitamente possono essere convertite in variabili o funzioni.
-
La ridichiarazione delle funzioni è completamente legale.
FORNITO quanto sopra è seguito, include le guardie diventano inutili. Esiste un'eccezione per le funzioni inline
, che devono essere definite nell'intestazione, ma molti progetti non le usano.
Dato tutto ciò, perché la protezione include uno standard del settore? La maggior parte degli IDE li aggiunge automaticamente al momento della creazione del file.