C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 带C连接的非外部功能大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在没有外部链接的情况下可以用C连接声明一个函数吗?尝试编译时
extern "C" static void f() {}

我得到

f.cc:1: error: invalid use of 'static' in linkage specification

在某种程度上是有道理的.在命名空间{extern“C”void f(){}}中,extern说明符似乎覆盖了匿名命名空间的限制范围.

如果这是不可能的,在将函数指针传递给C时是否重要?

解决方法

你可以做
extern "C" {
  static void f() {}
}

这将给出函数f的C连接,这实际上意味着它在你的平台上使用C调用约定.该函数名称仍然具有C /内部链接,因为语言链接规范仅适用于外部链接函数名称.

如果在声明中直接指定extern“C”,则“标准”指定extern“C”也是存储类说明符,因此如果要添加静态,则会产生冲突.

从理论上讲,这种实现可以不同于调用类型具有C连接的函数,调用类型具有C连接的函数.我不知道实现细节,只是规范说了什么.最好遵循规范,你是安全的.

大佬总结

以上是大佬教程为你收集整理的c – 带C连接的非外部功能全部内容,希望文章能够帮你解决c – 带C连接的非外部功能所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。