2010-05-16 20 views
5

這很可能是一個非常愚蠢的問題,但我需要確定。我已經在頭文件中給出了一個類聲明,例如。有關條件編譯的快速問題(ifndef)

#ifndef file_H 
#define file_H 

class ex{ 
private: 

public: 
}; 

#endif 

,我一直要求寫的方法定義在同一個文件,我已經做了,我的問題是它的「#ENDIF」留在它只是在類聲明後或者它去在我的文件末尾的類方法定義之後?

回答

6

在文件末尾。

#ifndef模式的這種形式的目標是防止在編譯單元中出現兩次相同的聲明或定義的情況。

這樣做是因爲一個C文件可能包含幾個H文件,這些文件在鏈上某處可能會包含相同的文件。如果你只是運行沒有這些的預處理器,你就會擁有H文件的多個副本。這樣,您有多個副本,但預處理器會在第一次遭遇後忽略所有內容。

因爲你不應該多次定義任何東西,所以如果必須將方法定義放在頭文件中,請將它們放在#endif之內。

+0

非常感謝你 – silent 2010-05-16 04:18:41