c - 如何解析两个同名的结构体?

标签 c structure

在我的代码库中,我发现两个模块具有同名的结构。它给出了名称冲突错误。有没有办法不改代码就解决?

最佳答案

这是一个糟糕的 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/

相关文章:

c - 在代码中出现奇怪的段错误

C:多维数组实现不起作用,给出不同的值

android - Android Studio 的结构侧边栏中的不同图标和符号表示什么意思?

c - 错误: invalid type argument of '->' (have 'struct node' )

python - BYTE 到 python C 类型结构转换问题

c - 当线程在 c 中调用 longjmp() 时会发生什么

c - 关于 Rot13-实现

eclipse 中的 Android 项目文件夹

C99 结构指定初始化器和其他值

c++ - 运行 OFX 插件