将bool值返回到C环境中

returning bool value into C- environment

本文关键字:环境 返回 bool      更新时间:2023-10-16

假设我在C库中有一个函数指针

int (*fptr)(void);

我有一门c++课程

class A { static int func(); }

我可以做以下,它将是安全的任何平台

ftpr = A::func;

我希望A::func()返回bool

class A { static bool func(); }

我不介意铸造

fptr = reinterpret_cast<int(*)()>(A::func);

但它在任何平台上都安全吗?乍一看,它似乎会(只要sizeof(bool) <= sizeof(int)),但我不太确定。

否,强制转换函数指针是不安全的。通过错误类型的函数指针调用函数会产生未定义的行为。

如果您需要C++代码与C代码进行互操作,请不要在接口中使用C++bool类型(或者C没有的任何其他C++类型)。