我想隐藏结构定义,所以我在源文件中定义结构,如下所示:
//a.c
#include "a.h"
struct a_s
{
int a;
int b;
};
int func(a_t *a)
{
printf("%d\n", a->a);
return 0;
}
我在头文件中声明结构,如下所示:
//a.h
#ifndef TEST
#define TEST
#include <stdio.h>
#include <stddef.h>
typedef struct a_s a_t;
#endif
然后我使用 struct a_t
int main.c 文件,如下所示:
#include "stddef.h"
#include "a.h"
int main()
{
a_t a;
a.a =2;
func(&a);
return 0;
}
但是当我编译 main.c 时gcc -c main.c
,它失败了
main.c: In function ‘main’:
main.c:7:15: error: storage size of ‘a’ isn’t known
struct a_s a;
为什么会失败?