C++ 将指针从C传递到C++;反之亦然
关于向结构、双精度、函数等传递指针,有没有什么建议可以给我。。。从C程序到C++库,并且返回 C和C++指针是相同的——指针基本指向内存块,而从C/C++中不改变。 您确实希望注意不要交叉堆类型——例如,不要在一个库中分配,也不要在可能有另一个堆或正在使用另一个运行时版本的库中取消分配(反之亦然) 您的意思是询问有关传递值或传递引用的问题吗?它可能有助于提供一个更具体的问题。C++ 将指针从C传递到C++;反之亦然,c++,c,pointers,C++,C,Pointers,关于向结构、双精度、函数等传递指针,有没有什么建议可以给我。。。从C程序到C++库,并且返回 C和C++指针是相同的——指针基本指向内存块,而从C/C++中不改变。 您确实希望注意不要交叉堆类型——例如,不要在一个库中分配,也不要在可能有另一个堆或正在使用另一个运行时版本的库中取消分配(反之亦然) 您的意思是询问有关传递值或传递引用的问题吗?它可能有助于提供一个更具体的问题。 不要忘记使用外部“C”关键字 避免C++的问题 名字 不使用按引用传递参数类型,而是使用指针 假设您在两个不同的库(静
- 不要忘记使用外部“C”关键字 避免C++的问题 名字
- 不使用按引用传递参数类型,而是使用指针
不要将C++类作为C结构来强制转换。即使字段的布局相同,它们在封面下也不相同。C++类如果有任何虚拟成员,则有一个“V表”;此v表允许正确调用继承的或基类方法
<>这是C到C++或C++到C++的真实情况。确保两者对输出库使用相同的字节对齐方式。您只能通过阅读编译器或开发环境文档来确定这一点这是一个很好的问题,但是,举一个例子,你有更多的具体问题将有助于社区提供最好的建议。函数的指针(不是方法)在C++中与C中相同。然而,你必须用“代码>外部”C”/代码来定义它们,使它们不被人理解,也许值得读一读这篇文章:
Pseudocode-ish Example:
// C++ class
class foo {
public:
void DoIt();
};
// export helper declarations
extern "C" void call_doit(foo* pFoo);
extern "C" foo* allocate_foo();
extern "C" deallocate_foo(foo* pFoo);
// implementation
void call_doit(foo* pFoo)
{
pFoo->DoIt();
}
foo* allocate_foo()
{
return new foo();
}
deallocate_foo(foo* pFoo)
{
delete pFoo;
}
// c consumer
void main()
{
foo* pFoo= allocate_foo();
call_doit(pFoo);
dealocate_foo(pFoo);
}