函数声明为static但从未定义过

时间:2013-03-28 12:09:42

标签: c gcc-warning

我有一个头文件假设为abc.h,其中我的函数声明为:

static int function1();

我已将此头文件包含在abc.c中并已定义该函数并使用它。

static int function1()
{
 < function definition>
}

编译后我收到警告:

warning: function1 declared static but never defined

如何在不删除静电的情况下删除警告。 感谢。

2 个答案:

答案 0 :(得分:28)

静态函数可以在头文件中声明,但这会导致包含头文件的每个源文件都有自己的函数私有副本,这可能不是预期的。

您确定未将 abc.h 文件包含在任何其他.c文件中吗?

由于将函数声明为静态函数,因此需要在所有 .c文件中定义函数。

答案 1 :(得分:1)

良好做法:在定义的源文件中声明静态函数(请同时提供原型),因为它是唯一可见的文件。

这样,该功能只对该文件可见,这种可见性问题可以减少可能的代码冲突!因此,只需在.c文件中提供原型和静态函数定义。不要在头文件中包含静态函数; .h文件用于外部消费。

重复:Static functions in C