前向声明,无论是结构还是函数,不应该做前向声明应该做的事情,即让我们在定义它们之前使用structure
or吗?function
为什么结构的前向声明在我的代码中不起作用?而我最想念的主要事情是,在 C 中任何使用的结构的前向声明?什么时候使用?你能给我一个小的C程序例子来说明这一点吗?
我的程序给出了错误error: storage size of 'x' isn't known|
。
#include<stdio.h>
struct test;
int main(void)
{
struct test x;
printf("%zu",sizeof(x)); //Gives Error
//printf("%zu",sizeof(struct test));//This fails too
}
struct test
{
int a;
char b;
};
新编辑我试图按照卡尔·努姆所说的去做,但即使这样也行不通:
#include<stdio.h>
struct test;
void foo(struct test*);
int main(void)
{
struct test x={53,'x'},*ptr=&x;
foo(ptr);
}
void foo(struct test* p)
{
printf("%d,%c",p->a,p->b);
}
struct test
{
int a;
char b;
};