c中头文件中指向它的指针的结构问题

c中头文件中指向它的指针的结构问题,c,C,在上面的两个print语句中,它给出了一个错误,即结构的某个成员不存在。我错过什么了吗?还有什么我必须做的吗? 我有一个类似的情况-非常相似,不确切。请帮忙。这很重要,我没有太多时间。试试: `"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

在上面的两个print语句中,它给出了一个错误,即结构的某个成员不存在。我错过什么了吗?还有什么我必须做的吗? 我有一个类似的情况-非常相似,不确切。请帮忙。这很重要,我没有太多时间。

试试:

`"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);
}
尝试:

这甚至不会编译,更不用说运行了。您在
a.c
中对
a
进行了活动定义,您的
typedef
不完整,
文件应该是
File
(您应该包括
stdio.h
),这就是我停止读取并开始重写的地方。如果您发布代码来演示问题,请确保发布正确的代码,而不仅仅是您编造的代码:-)

如果您想从一个有效的解决方案开始,请选择a.h

typedef struct 
{
File* fp;
int var;
} a;
最后,
main.c

#include <stdio.h>
typedef struct {
    FILE* fp;
    int var;
} a;
#include "a.h"
int show(a* ptr) {
    printf ("%d\n", ptr->var);
}
#包括
#包括
#包括“a.h”
内部主(空){
a*pp=malloc(sizeof(a));
printf(“%d\n”,pp->var);
表演(pp);
返回0;
}
这些程序至少可以编译,这样您就可以开始调试过程了。

甚至无法编译,更不用说运行了。您在
a.c
中对
a
进行了活动定义,您的
typedef
不完整,
文件应该是
File
(您应该包括
stdio.h
),这就是我停止读取并开始重写的地方。如果您发布代码来演示问题,请确保发布正确的代码,而不仅仅是您编造的代码:-)

如果您想从一个有效的解决方案开始,请选择a.h

typedef struct 
{
File* fp;
int var;
} a;
最后,
main.c

#include <stdio.h>
typedef struct {
    FILE* fp;
    int var;
} a;
#include "a.h"
int show(a* ptr) {
    printf ("%d\n", ptr->var);
}
#包括
#包括
#包括“a.h”
内部主(空){
a*pp=malloc(sizeof(a));
printf(“%d\n”,pp->var);
表演(pp);
返回0;
}
这些将至少编译到您可以开始调试过程的时间点

  • a.c
    中,您忘记包含
    a.h
    ,因此结构的定义不可用
  • 即使您声明了一个变量
    pp
    ,您还是忘记了实际定义它。看
  • 在旁注上-不要将
    typedef
    用于不需要的结构(即,该类型应为不透明类型)。C程序员喜欢事情清晰明了。如果它是一个结构,一个“struct”提示是非常值得赞赏的,而且更糟糕的是多键入一点

    此外,“main”函数必须返回整数结果代码,最好是
    EXIT\u SUCCESS
    EXIT\u FAILURE
    (在
    stdlib.h
    中定义)

  • a.c
    中,您忘记包含
    a.h
    ,因此结构的定义不可用
  • 即使您声明了一个变量
    pp
    ,您还是忘记了实际定义它。看
  • 在旁注上-不要将
    typedef
    用于不需要的结构(即,该类型应为不透明类型)。C程序员喜欢事情清晰明了。如果它是一个结构,一个“struct”提示是非常值得赞赏的,而且更糟糕的是多键入一点


    另外,“main”函数必须返回一个整数结果代码,最好是
    EXIT\u SUCCESS
    EXIT\u FAILURE
    (在
    stdlib.h
    中定义)。

    忘了上面提到的,我在头文件中包含了函数原型。所以,这不是问题。您的
    typedef
    无效;在
    }
    之间应该有另一个
    a
    。忘了上面提到的,我在头文件中包含了函数原型。所以,这不是问题。您的
    typedef
    无效;在
    }
    之间应该有另一个
    a
    @paxdiablo:谢谢你教我如何发布代码,你一定已经知道我是stkovrflw的新手。我不能给你我正在写的代码,因为它是保密的。不管怎样,我试了很久以前你建议的方法。它不起作用。还是一样的错误。。好像你把我的问题改得更通俗易懂了@paxdiablo:谢谢你教我如何发布代码,你一定已经知道我是新来的。我不能给你我正在写的代码,因为它是保密的。不管怎样,我试了很久以前你建议的方法。它不起作用。还是一样的错误。。好像你把我的问题改得更通俗易懂了!另外,最新的C标准不需要从main显式返回。@paxdiablo:Hm。。是C99还是C11?我一直认为它只适用于C++,而不是C。作为旁白,最新的C标准不需要从Maun.@ PaxDabLo: Hm.。是C99还是C11?我一直认为它是唯一的C++,而不是C。