`"a.h"
typedef struct a
{
File* fp;
int var;
};
extern a *pp;
---------------------
"a.c"
int show(a* ptr)
{
printf("%d",ptr->var); //ptr has no member named var
}
---------------------
"main.c"
#include"a.h"
main()
{
a *pp=(a*)malloc(sizeof(a));
printf("%d",pp->var);// pp has no member named var
show(pp);
}
in the two print statements above, it gives me an error that a certain member of the struct is not present. did i miss anything? is there something i must do in addition?
i have a situation like this- very similar, not exact. please help. it is very important and i dont have much time.
a.cyou forgot to includea.hso that the definition of the structure is not available.pp, you forgot to actually define it. See External Variable.On a side note – do not use
typedefwith structures where it is not necessary (i.e. the type is supposed to be an opaque type). C programmers like things to be clear and explicit. If it is a structure, a “struct” hint is very much appreciated and is worse a bit more typing.Also, the “main” function must return an integer result code, preferably
EXIT_SUCCESSorEXIT_FAILURE(defined instdlib.h).