假设我在低级代码的某个深处定义了一个结构,以最疯狂和未知的方式在各处使用:
struct T {
unsigned short name_len;
char d_name[LENGTH];
}
附带的函数可以用需要放在那里的任何东西填充 d_name,比如
struct T* fill( somethingOrOther* X)
我想扩展旧的结构+函数以包含一个新变量:
struct T {
unsigned short name_len;
char d_name[LENGTH];
unsigned short type_len;
char d_type;
}
而且新版本的函数也会用有用的东西填充 d_type 变量。
这种类型的更改会破坏 API 吗?我不能只使用新 T 而不是旧 T,并且另外访问新成员吗?
最佳答案
像这样扩展你的结构可能是有意义的:
struct newT {
struct T t;
int newElement;
...
}
然后你就可以安全的使用newT指针作为T指针了; C 标准保证在结构的第一个元素之前没有填充。
关于c - 将成员添加到 C 风格结构和向后兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3309614/