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

Nep*_*muk 0 c++ static-methods extern

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

extern uint8_t ADS1x1x_i2c_start_write (uint8_t i2c_address);
Run Code Online (Sandbox Code Playgroud)

我的 C++ 代码现在包含一个名为 的类vfd,该类将包含实现各自函数存根的静态方法,就像这样:

uint8_t vfd::ADS1x1x_i2c_start_write (uint8_t i2c_address) {
  uint8_t ret = 0x00;
  // do something
  return ret;
}
Run Code Online (Sandbox Code Playgroud)

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

class vfd {
  public:
    uint8_t ADS1x1x_i2c_start_write (uint8_t i2c_address);
}
Run Code Online (Sandbox Code Playgroud)

我应该如何声明我的方法,以便编译器将它们识别为extern我的库头文件中相应函数的实现?

R S*_*ahu 7

我应该如何声明我的方法,以便编译器将它们识别为我的库头文件中相应 extern 函数的实现?

你不能这样做。Anextern "C"与类的static成员函数不同。

您可以实现该extern "C"函数,使其static成为类成员函数的传递。

extern "C" uint8_t ADS1x1x_i2c_start_write (uint8_t i2c_address)
{
    return vfd::ADS1x1x_i2c_start_write(i2c_address);
}
Run Code Online (Sandbox Code Playgroud)