c++ - 关于将 C++ 类导出到 C 的问题

标签 c++ c

我一直在阅读有关导出 C++ 类以便 C 可以使用它的信息。我关注了这个好example来自 Parashift,然后出现了一个问题。

为了保存分配给C++类的内存,我们定义如下结构

typedef struct A A;

这样A*就可以指向类A的地址。我的问题是:这个指针是哪种类型有关系吗?例如,我们不能 typedef 是这样的:

typedef double A;

因为负责分配和释放内存的可能是 C++ 代码。

最佳答案

不,你不应该这样使用 void*。指向不完整类型 struct A 的指针是一种更好的技术。这可以避免您意外混合指向不同不透明类型的指针。如果您将 typedef 设置为 void,您可以将不透明类型的指针分配给任何其他数据指针。可能不是您想要的。

使用不完整的类型可以免费为您提供一点类型安全。

关于c++ - 关于将 C++ 类导出到 C 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6305977/

相关文章:

c++ - 为什么节点不能链接在一起?

c++ - 寻找最优子结构

c++ - 从成员初始化列表中调用普通的 void 函数?

c - 下面的 C 代码打印垃圾值有什么问题?

c++ - 使谷歌测试框架输出用户定义的类型

c++ - 以编程方式模拟 Alt + Enter 按键不起作用

c - C 头文件和源文件的标准结构

c# - 随机方向,没有重复..(错误描述)

objective-c - 使用 0.5 规则舍入 float 的方法

c - 关于字符指针的二维数组