我目前正在使用GTest进行单元测试,并注意到我没有将目标源代码(target.c)上写的所有函数声明为其标题(target.h)。由于我没有对那些未申报的功能进行测试,我直到现在才注意到。
现在,似乎这些头部未声明的函数作为“私有”函数起作用,因为它们不能从测试代码(包括目标源代码的头部)调用。
我可以将此视为一种声明私有功能的方式,还是应该注意其他安全措施呢?
答案 0 :(得分:2)
没有。这不会使你的功能私有化。然后它需要调用者自己执行该函数。使用静态关键字是创建私有函数的适当方法。例如:
static void myfunc ()
{
...
}
不在标题中包含它并不能使它成为私有函数,因为任何其他C文件都可以在其标题或C代码中添加extern void myfunc()
并获得对该函数的访问权限。在编译时,所有这些都将被链接(假设您正在编译所有文件)。
但是所有静态对象都只有模块级别(或文件范围)可见性
对于您在文件管理器中只需要的变量也是如此。