请考虑以下代码:
header.h
typedef struct foo_tag__ foo;
int do_something(foo data);
private.h
struct foo_tag__
{
/* Some fields go here. */
int foo1;
int foo2;
double some_value;
};
program.c
#include "header.h"
#include "private.h"
int main()
{
/* Do something */
return(0);
}
现在,当我这样做时,我会在整个地方收到错误。那么可以使用两个不同的头文件来定义不透明类型吗?一个是公共的,另一个是私有的,没有放在include目录中。
编辑:基于其他研究,我选择使用void *指针来为库提供不透明的接口。这个问题可以关闭。此外,链接的问题虽然相似,但与我尝试在一个头文件中定义opaque类型不同,然后在不同的头文件中填写定义,因为它在多个文件中使用。此外,链接的问题没有标记答案。