2013-03-21 77 views
0

我有一種情況,其中有一個頭文件並且必須包含在多個文件中。它有一些靜態函數原型。我想要做這樣的事情#ifdef在c文件名中用於守護頭文件中的靜態函數

#ifdef filename.c 
static foo(void); 
static bar(int); 
#endif 

這意味着,如果我這包括與名FILENAME.C它的函數原型是活動的,如果包括在其他一些文件,他們很安靜的一個文件。

+0

爲什麼在世界上你想把靜態函數原型放到頭文件中???它的用途是什麼?如果它們是靜態的,那麼在你定義的文件中使用...不需要在頭文件中聲明它。 – 2013-03-21 09:02:04

回答

0

filename.c是一個相對罕見的符號。除此之外,你需要在filename.c文件中明確定義一個符號。像:

#ifdef FILENAME_C_ 
static foo(void); 
static bar(int); 
#endif 

而在你filename.c -file

#define FILENAME_C_ 

你應該更喜歡下劃線_ -version在FILENAME_C_,更常見,更易於閱讀。 但是,我不明白你爲什麼只聲明這些函數?無論如何,你需要在filename.c文件中定義它們。你想用這個做什麼?

+0

不幸的是,對於編譯器供應商,序列「_ +大寫字母」(以及其他一些以下劃線開頭的序列)被保留。在用戶級程序中,最好使用「FILENAME_C」之類的東西。 – Lindydancer 2013-03-21 09:05:31

+0

@Lindydancer好吧,我不知道,會改變它!謝謝 – 2013-03-21 09:07:28

+0

函數不是由我寫的,而是正在生成,頭文件被包含在兩個c文件,所以我問這個。 – kartik 2013-03-21 09:35:50