将bool值返回到C-环境中

时间:2012-01-06 18:06:29

标签: c++

假设我在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)),但我不太确定。

1 个答案:

答案 0 :(得分:4)

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

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