2013-03-21 79 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