如何在C ++类中实现在C标头中用“ extern”子句指定的函数?

内波穆克

在我用C ++编写的项目中,我将使用在C中实现的驱动程序库。库的头文件包含许多声明为extern函数存根,我将必须实现:

extern uint8_t ADS1x1x_i2c_start_write (uint8_t i2c_address);

我的C ++代码现在包含一个名为的类vfd该类将包含实现相应函数存根的静态方法,如下所示:

uint8_t vfd::ADS1x1x_i2c_start_write (uint8_t i2c_address) {
  uint8_t ret = 0x00;
  // do something
  return ret;
}

vfd该类的头文件中,相应的行将如下所示:

class vfd {
  public:
    uint8_t ADS1x1x_i2c_start_write (uint8_t i2c_address);
}

如何声明我的方法,以便编译器extern从我的库头中将它们识别为相应功能的实现

叶普顿

你不能。您可以在C ++文件中单独实现这些C函数,并使它们在类内调用静态函数:

extern "C" uint8_t ADS1x1x_i2c_start_write (uint8_t i2c_address) {
    vfd::ADS1x1x_i2c_start_write(address);
}

它们是静态的,对吗?否则,您还必须为this要调用的方法提供一个对象,并且在C API中它无处可去,您必须自己弄清楚它,例如:

extern "C" uint8_t ADS1x1x_i2c_start_write (uint8_t i2c_address) {
    some_var_of_type_vfd.ADS1x1x_i2c_start_write(address);
}

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C ++-std :: list标头中_List_node_base成员函数的实现在哪里

来自分类Dev

C-标头中的函数实现应使用extern / inline / static吗?

来自分类Dev

C ++-在模板类之外但在标头中定义成员函数

来自分类Dev

C ++继承:在标头中调用基类构造函数

来自分类Dev

C ++如何在cpp之间与extern共享常量-错误:指定了存储类

来自分类Dev

如何声明extern(“ C”)const函数?

来自分类Dev

如何传递extern(C)函数文字?

来自分类Dev

定义在C标头中传递结构的函数

来自分类Dev

如何在C ++中为多个类类型指定相同的模板化成员函数?

来自分类Dev

在C的标头中定义别名类型的extern变量

来自分类Dev

C ++标头中extern变量的未定义引用

来自分类Dev

如何在C ++ 11中实现make_unique函数?

来自分类Dev

如何在C中实现函数查找表?

来自分类Dev

如何在 C# 中实现 F# 高阶函数?

来自分类Dev

在Objective C标头中访问Swift类

来自分类Dev

如何在C ++中的类中递归调用函数方法?

来自分类Dev

如何在C ++中的函数定义中调用类

来自分类Dev

如何在C ++中实现静态类?

来自分类Dev

C#如何在字典中存储类构造函数

来自分类Dev

如何在C ++中的类构造函数中使用线程?

来自分类Dev

C#如何在字典中存储类构造函数

来自分类Dev

绑定函数如何在C ++中用于功能对象

来自分类Dev

如何在C#中用AluminumLua调用Lua函数?

来自分类Dev

如何将尚未在C标头中声明的C函数导入C ++项目?

来自分类Dev

extern(C) 对 Dlang 中函数类型的影响

来自分类Dev

C++:如何在复杂的模板类中指定线程函数?

来自分类Dev

如何在C中包含辅助函数?

来自分类Dev

如何在C中调用Rust函数?

来自分类Dev

内联函数如何在C ++中工作?

Related 相关文章

热门标签

归档