如果我没有在头文件中声明所有函数,会发生什么?

加加敏

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

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

我可以认为这是声明私有功能的一种方式,还是我应该注意其他一些安全性?

工程师14

不可以,这不能使您的功能不公开。这只是要求调用者自己终止该功能。使用静态关键字是创建私有功能的适当方法。例如:

static void myfunc ()
{
 ...
}

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

但是所有静态对象将仅具有模块级别(或文件范围)的可见性

您只需要在Filescope中使用的变量也是如此。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如果我没有在头文件中声明所有函数,会发生什么?

来自分类Dev

如果我在非异步函数中调用 `AsyncStorage.setItem` 而没有 await 会发生什么?

来自分类Dev

如果我取消选中“软件和更新”中的所有PPA,会发生什么情况?

来自分类Dev

如果没有或只有部分字段在构造函数初始化会发生什么

来自分类Dev

如果我没有收到带有getDynamicLink(intent)的dynamicLink,会发生什么?

来自分类Dev

如果我没有在Corb中指定集合名称,会发生什么

来自分类Dev

如果我为没有CPU / RAM的主板供电,会发生什么?

来自分类Dev

如果我没有在Corb中指定集合名称,会发生什么

来自分类Dev

如果我们在定义中使用“ decltype(auto)f()”作为带有“ decltype(f())result”的函数声明,会发生什么?

来自分类Dev

如果没有在Django中定义STATICFILES_DIR,会发生什么?

来自分类Dev

如果将我的bean声明为@ApplicationScoped,但它具有一个公共字段,会发生什么?

来自分类Dev

虚拟析构函数,如果在派生类中没有析构函数,会发生什么情况?

来自分类Dev

在头文件中不包含所有函数声明以创建“私有名称空间”是否可以接受?

来自分类Dev

如果在SQL中现有字段名后没有放置逗号,会发生什么情况

来自分类Dev

如果我删除了 GPU 驱动程序并且没有集成显卡,会发生什么?

来自分类Dev

如果未在res文件夹中放置所有可能大小的图标,会发生什么情况?

来自分类Dev

当我根本不能将其放在头文件中时,为什么要声明一个“私有”函数为静态?

来自分类Dev

如果没有事务,如果回滚表会发生什么?

来自分类Dev

如果在laravel5中没有DB :: commit()的情况下调用DB :: beginTransaction,会发生什么?

来自分类Dev

在php中,当CURLOPT_SSL_VERIFYPEER设置为true时,如果没有设置CURLOPT_CAPATH会发生什么

来自分类Dev

我可以在公共头文件中声明变量为const而不在私有头文件中声明为const吗?

来自分类Dev

如果我从构造函数抛出异常,构造函数中的已分配内存会发生什么?

来自分类Dev

如何找到所有SSE指令的列表?如果CPU不支持SSE,会发生什么?

来自分类Dev

如果无线设备无法到达接入点的所有天线会发生什么?

来自分类Dev

如果没有匹配项,Rust使用“ match”会发生什么?

来自分类Dev

如果没有消息发送回贝宝,贝宝 IPN 会发生什么

来自分类Dev

如果在 >(重定向)之后没有定义目的地会发生什么?

来自分类Dev

如果没有处理程序,Azure IoT 中心直接方法调用会发生什么

来自分类Dev

如果我在fortran中调用一个函数而未定义变量,会发生什么?

Related 相关文章

  1. 1

    如果我没有在头文件中声明所有函数,会发生什么?

  2. 2

    如果我在非异步函数中调用 `AsyncStorage.setItem` 而没有 await 会发生什么?

  3. 3

    如果我取消选中“软件和更新”中的所有PPA,会发生什么情况?

  4. 4

    如果没有或只有部分字段在构造函数初始化会发生什么

  5. 5

    如果我没有收到带有getDynamicLink(intent)的dynamicLink,会发生什么?

  6. 6

    如果我没有在Corb中指定集合名称,会发生什么

  7. 7

    如果我为没有CPU / RAM的主板供电,会发生什么?

  8. 8

    如果我没有在Corb中指定集合名称,会发生什么

  9. 9

    如果我们在定义中使用“ decltype(auto)f()”作为带有“ decltype(f())result”的函数声明,会发生什么?

  10. 10

    如果没有在Django中定义STATICFILES_DIR,会发生什么?

  11. 11

    如果将我的bean声明为@ApplicationScoped,但它具有一个公共字段,会发生什么?

  12. 12

    虚拟析构函数,如果在派生类中没有析构函数,会发生什么情况?

  13. 13

    在头文件中不包含所有函数声明以创建“私有名称空间”是否可以接受?

  14. 14

    如果在SQL中现有字段名后没有放置逗号,会发生什么情况

  15. 15

    如果我删除了 GPU 驱动程序并且没有集成显卡,会发生什么?

  16. 16

    如果未在res文件夹中放置所有可能大小的图标,会发生什么情况?

  17. 17

    当我根本不能将其放在头文件中时,为什么要声明一个“私有”函数为静态?

  18. 18

    如果没有事务,如果回滚表会发生什么?

  19. 19

    如果在laravel5中没有DB :: commit()的情况下调用DB :: beginTransaction,会发生什么?

  20. 20

    在php中,当CURLOPT_SSL_VERIFYPEER设置为true时,如果没有设置CURLOPT_CAPATH会发生什么

  21. 21

    我可以在公共头文件中声明变量为const而不在私有头文件中声明为const吗?

  22. 22

    如果我从构造函数抛出异常,构造函数中的已分配内存会发生什么?

  23. 23

    如何找到所有SSE指令的列表?如果CPU不支持SSE,会发生什么?

  24. 24

    如果无线设备无法到达接入点的所有天线会发生什么?

  25. 25

    如果没有匹配项,Rust使用“ match”会发生什么?

  26. 26

    如果没有消息发送回贝宝,贝宝 IPN 会发生什么

  27. 27

    如果在 >(重定向)之后没有定义目的地会发生什么?

  28. 28

    如果没有处理程序,Azure IoT 中心直接方法调用会发生什么

  29. 29

    如果我在fortran中调用一个函数而未定义变量,会发生什么?

热门标签

归档