【发布时间】:2023-08-17 02:28:01
【问题描述】:
这样做有副作用吗:
C 代码:
struct foo {
int k;
};
int ret_foo(const struct foo* f){
return f.k;
}
C++ 代码:
class bar : public foo {
int my_bar() {
return ret_foo( (foo)this );
}
};
C++ 代码周围有一个extern "C",每个代码都在自己的编译单元中。
这可以跨编译器移植吗?
【问题讨论】:
-
我猜你的意思是 (foo*)this,或者更好:static_cast
(this) -
我很好奇 extern "C" 对带有方法的类的影响...不过,您想要这样做的原因将有助于我们提供信息或替代解决方案。跨度>
-
当您说“跨编译器移植”时,您的意思是用一个编译器编译 C 代码,用另一个编译器编译 C++,然后将两者链接在一起吗?