如果我没有在标题中声明所有函数会发生什么?

时间:2016-07-18 05:34:27

标签: c header

我目前正在使用GTest进行单元测试,并注意到我没有将目标源代码(target.c)上写的所有函数声明为其标题(target.h)。由于我没有对那些未申报的功能进行测试,我直到现在才注意到。

现在,似乎这些头部未声明的函数作为“私有”函数起作用,因为它们不能从测试代码(包括目标源代码的头部)调用。

我可以将此视为一种声明私有功能的方式,还是应该注意其他安全措施呢?

1 个答案:

答案 0 :(得分:2)

没有。这不会使你的功能私有化。然后它需要调用者自己执行该函数。使用静态关键字是创建私有函数的适当方法。例如:

static void myfunc ()
{
 ...
}

不在标题中包含它并不能使它成为私有函数,因为任何其他C文件都可以在其标题或C代码中添加extern void myfunc()并获得对该函数的访问权限。在编译时,所有这些都将被链接(假设您正在编译所有文件)。

但是所有静态对象都只有模块级别(或文件范围)可见性

对于您在文件管理器中只需要的变量也是如此。