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

pan*_*naj 36 c gcc-warning

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

static int function1();
Run Code Online (Sandbox Code Playgroud)

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

static int function1()
{
 < function definition>
}
Run Code Online (Sandbox Code Playgroud)

编译后我收到警告:

warning: function1 declared static but never defined
Run Code Online (Sandbox Code Playgroud)

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

haz*_*tie 36

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

你确定你没有在任何其他.c文件中包含abc.h文件吗?

因为将函数声明为静态,所以需要在包含它的所有 .c文件中定义函数.


Ehs*_*san 7

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

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

复制:C中的静态函数