在我的代码库中,我发现两个模块具有同名的结构。它给出了名称冲突错误。有没有办法不改代码就解决?
最佳答案
这是一个糟糕的 hack,但可以使用宏来重新定义结构的名称,就像这样
// a.h
struct collide {
int a;
};
// b.h
struct collide {
float b;
};
// test.c
#define collide a_collide
#include "a.h"
#undef collide
#include "b.h"
int main(){
struct a_collide a;
struct collide b;
return 0;
}
您可能想重命名两个 header 的结构,以便在有人不可避免地使用错误的结构时给出错误,可能是在像这样的包装器 header 中
// wrap_a.h
#define collide a_collide
#include "a.h"
#undef collide
请记住取消定义宏,这样您就不会在整个代码中随机替换。
关于c - 如何解析两个同名的结构体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2680502/