在我用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] 删除。
我来说两句