gpt4 book ai didi

c - 在 C 文件中重新声明不透明结构

转载 作者:行者123 更新时间:2023-11-30 14:42:35 25 4
gpt4 key购买 nike

我正在编写一个头文件,该文件声明了一些不透明的struct,这些结构应该在相应的 C 文件中定义。这是:

decl.h

#ifndef DECL_H
#define DECL_H

typedef struct test_t test;

#endif //

一些应该在实现中使用的库在其 header 中定义了另一个不透明结构lib.h:

//...
typedef struct _library_struct_t library_struct;
//...

现在,在我的 decl.c 文件中,我想让 struct test_tlibrary_struct 相同(或兼容)。我试过这个:

decl.c

//...
typedef library_struct test; //error: conflicting types for ‘test’
//...

但是它无法编译。所以我现在能看到的唯一方法是

struct test_t{
library_struct *lib_struct_ptr;
};

有没有更短或更方便的方法? testlibrary_struct 都是不透明的。为什么我不能使 testlibrary_struct 相同?宏在这里有用吗?

最佳答案

你的代码相当于

typedef struct test_t test; /* from decl.h */
typedef library_struct test; /* in decl.c */

所以你重新定义了测试,当然编译器不接受

我不知道你希望通过宏做什么,但不允许重新定义。

在最坏的情况下,您可以使用 void * 隐藏指针的类型,然后转换为您(希望)拥有的类型,但这显然是危险的,因为编译器会跟随您风险自负

编译器不会针对您检查类型,而是帮助您在编译时查看错误...

关于c - 在 C 文件中重新声明不透明结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54378011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com