2010-05-16 15 views
5

Questa è probabilmente una domanda molto sciocca, ma devo essere sicuro. Mi è stata data una dichiarazione di classe in un file di intestazione, ad es.Domanda veloce sulla compilazione condizionale (ifndef)

#ifndef file_H 
#define file_H 

class ex{ 
private: 

public: 
}; 

#endif 

e sono stato richiesto di scrivere le definizioni dei metodi nello stesso file, che ho fatto, la mia domanda è fa il "#endif" rimanere dove si è subito dopo la dichiarazione di classe o va a finire alla fine del mio file dopo le definizioni del metodo di classe ?.

risposta

6

Alla fine del file.

L'obiettivo di questo modulo di questo modello #ifndef è impedire una situazione in cui la stessa dichiarazione o definizione appare due volte in un'unità di compilazione.

Ciò è possibile perché un file C può includere diversi file H, che in qualche punto della catena possono a loro volta includere lo stesso file. Se hai semplicemente eseguito il preprocessore senza questi, avresti più copie del file H. In questo modo, hai più copie, ma il preprocessore ignora tutto dopo il primo incontro.

Dal momento che non si intende definire più di una volta, se si devono inserire le definizioni dei metodi nel file di intestazione, inserirle all'interno di #endif.

+0

grazie mille – silent