我有一種情況,其中有一個頭文件並且必須包含在多個文件中。它有一些靜態函數原型。我想要做這樣的事情#ifdef在c文件名中用於守護頭文件中的靜態函數
#ifdef filename.c
static foo(void);
static bar(int);
#endif
這意味着,如果我這包括與名FILENAME.C它的函數原型是活動的,如果包括在其他一些文件,他們很安靜的一個文件。
我有一種情況,其中有一個頭文件並且必須包含在多個文件中。它有一些靜態函數原型。我想要做這樣的事情#ifdef在c文件名中用於守護頭文件中的靜態函數
#ifdef filename.c
static foo(void);
static bar(int);
#endif
這意味着,如果我這包括與名FILENAME.C它的函數原型是活動的,如果包括在其他一些文件,他們很安靜的一個文件。
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文件中定義它們。你想用這個做什麼?
不幸的是,對於編譯器供應商,序列「_ +大寫字母」(以及其他一些以下劃線開頭的序列)被保留。在用戶級程序中,最好使用「FILENAME_C」之類的東西。 – Lindydancer 2013-03-21 09:05:31
@Lindydancer好吧,我不知道,會改變它!謝謝 – 2013-03-21 09:07:28
函數不是由我寫的,而是正在生成,頭文件被包含在兩個c文件,所以我問這個。 – kartik 2013-03-21 09:35:50
爲什麼在世界上你想把靜態函數原型放到頭文件中???它的用途是什麼?如果它們是靜態的,那麼在你定義的文件中使用...不需要在頭文件中聲明它。 – 2013-03-21 09:02:04