我一直在阅读有关导出 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/