我目前正在使用GTest进行单元测试,并且注意到我没有将写在目标源代码(target.c)上的所有函数声明到其标头(target.h)中。由于我没有对那些未声明的功能进行测试,因此直到现在我才注意到。
现在,似乎这些未声明标头的函数可以用作“私有”函数,因为它们不能从测试代码(包括目标源代码的标头)中调用。
我可以认为这是声明私有功能的一种方式,还是我应该注意其他一些安全性?
不可以,这不能使您的功能不公开。这只是要求调用者自己终止该功能。使用静态关键字是创建私有功能的适当方法。例如:
static void myfunc ()
{
...
}
不将其包含在标头中并不能使其成为私有函数,因为任何其他C文件都可以extern void myfunc()
在其标头或C代码中添加一个,并获得对该函数的访问权限。在编译时,所有这些都将被链接(假设您正在编译所有文件)。
但是所有静态对象将仅具有模块级别(或文件范围)的可见性
您只需要在Filescope中使用的变量也是如此。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句