c语言.c文件如何私有,C:为什么必须声明私有函数?

I asked why private functions had to be declared at all, as they don’t add anything (neither object size nor vtable entry) for other translation units to know

如果你考虑它,这类似于在文件中声明一些静态函数。它从外部不可见,但它对编译器本身很重要。编译器想知道函数的签名,然后才能使用它。这就是为什么你首先声明函数。记住,C编译器是一个通过,这意味着一切都必须在它被使用之前声明

从程序员的角度来看,声明私有函数仍然没有完全无用。想象2类,其中一个是另一个的朋友。友好的class2需要知道该类的私有如何,(这个讨论变得怪异)否则他们不能使用它。

至于为什么C是这样设计的,我首先说,有历史的原因:事实上,你不能在C中切割一个结构,C被采纳,因此你不能切割一个类(并采用其他语言从C分支)。我也猜想它是关于简单性:想象一下,设计一个编译方法有多困难,你可以在不同的头文件之间拆分类,让你的源文件知道它,并阻止其他人添加东西到你的类。

最后一点是,私有函数可以影响vtable大小。也就是说,如果他们是虚拟的。

1实际上不完全。如果在类中有内联函数,它们可以引用稍后在同一类中定义的函数。但可能这个想法从单程传递开始,这个异常后来添加到它。

2它的内联成员函数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值