函数声明为static但从定义(function declared static but never

2019-08-18 02:33发布

我有一个头文件假设abc.h,在那里我有函数声明为:

static int function1();

我已经包括在abc.c这个头文件和已定义的函数,并用它。

static int function1()
{
 < function definition>
}

编译后我收到警告:

warning: function1 declared static but never defined

如何删除警报,而不删除静态的。 谢谢。

Answer 1:

静态函数可以在头文件中声明,但是这会导致,包括头文件具有的功能,这可能不是想要的结果的自己的私人副本中的源文件。

是U确保ü没有包含在任何其他.c文件的abc.h文件?

因为声明一个函数为静态的,因此必须在它被包含的所有 .c文件(一个或多个)被定义的功能。



Answer 2:

良好做法:声明静态函数只在定义它的源文件中(请提供样机),因为这是他们在唯一可见的文件。

这样一来,该功能仅在该文件中看到,这种可见性问题可以减少可能的代码冲突! 所以,只需要提供样机,并在.c文件中的静态函数定义。 不包括在头文件中的静态函数; .h文件是外部消费。

复制: 用C静态函数



文章来源: function declared static but never defined
标签: c gcc-warning