我正在尝试构建一些 C 代码,以便 .c 文件和私有 .h 文件定义一个相当复杂的结构,但面向公众的头文件只需要指向该结构类型的指针。我尝试的是这样的:
公共广播.h
typedef struct _radio Radio;
void radioReceive(Radio *radio, ....);
私人电台.h
#include <publicRadio.h>
struct _radio {
...
...
}
电台.c
#include <publicRadio.h>
#include <privateRadio.h>
void radioReceive(Radio *radio, ....)
{
...
}
当我尝试编译它时,我得到了类似的东西
radio.c:91:9: error: parameter 'radio' has just a forward declaration
radio.c:90:6: error: conflicting types for 'radioReceive'
publicRadio.h:29:6: note: previous declaration of 'radioReceive' was here
我试图模仿我在其他库中看到的模式,这些库具有面向公众的 API,这些 API 通过函数公开其结构,但隐藏了血淋淋的细节。实现这一目标的秘诀是什么?