背景:我们正在用 C++ 实现一个动态库,它扩展了 C 程序的功能。对于 C 程序中使用的主要结构之一,我们想添加我们自己的库特定字段。目前,当我们需要一个新字段时,我们很好地要求 C 程序的开发人员为我们添加一个字段,但最终我们会遇到大量的铸造混乱。我想知道我们是否可以改为执行以下操作:
主程序头文件:
#ifdef __cplusplus
extern "C" {
#endif
/* ... */
typedef struct ImportantStruct {
/* Definitions */
} ImportantStruct
/* ... */
#ifdef __cplusplus
}
#endif
我们的头文件:
//...
class ObjectType : public ImportantStruct {
// Our extra fields
}
//...
我想我有两个问题:
1)这甚至合法吗?
2) 当 C 程序尝试使用对象的结构部分时,这会产生什么问题?