文件 api.h
#include <stdio.h>
#ifndef API
#define API
struct trytag;
typedef struct trytag try;
void trial (try *);
#endif
文件 core.h
#ifndef CORE
#define CORE
struct trytag
{
int a;
int b;
};
#endif
文件函数.c
#include "api.h"
#include "core.h"
void trial (try *tryvar)
{
tryvar->a = 1;
tryvar->b = 2;
}
文件 main.c
#include "api.h"
int main ()
{
try s_tryvar;
trial(&s_tryvar);
printf("a = %d\nb = %d\n", s_tryvar.a, s_tryvar.b);
}
当我编译时,我得到:
main.c:5: error: storage size of ‘s_tryvar’ isn’t known
如果我包含core.h
在main.c
此错误中,则不会像 try 中定义的那样出现core.h
。但我希望结构try
被隐藏到main.c
——它不应该知道try
结构的成员。我错过了什么?