Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 通过函数向结构传递指针_C - Fatal编程技术网

C 通过函数向结构传递指针

C 通过函数向结构传递指针,c,C,嗨,你能帮我解决C中的一个错误吗? 我有两个源文件和一个头文件。 一个源是main,另一个源充满函数,头包含函数声明 这是主要的 #include <stdio.h> #include <stdlib.h> #include <string.h> #include "fundeclarationheader.h" int main() { InfoSessionPtr MySession=NULL; My Session = Session; func

嗨,你能帮我解决C中的一个错误吗? 我有两个源文件和一个头文件。 一个源是main,另一个源充满函数,头包含函数声明 这是主要的

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "fundeclarationheader.h"


int main() {
InfoSessionPtr  MySession=NULL;
My Session = Session;
function(MySession->Tab);

return 0;
}
现在这是标题

typedef struct InfoSession *InfoSessionPtr;
typedef struct TabNode *TabNodePtr;
typedef struct SiteNode *SiteNodePtr;
void function(TabNodePtr);   

这里的问题是,当试图调用main中的“函数”时,我收到一条GCC消息:取消对不完整类型的引用指针

尝试合并头文件和源文件


在执行typedef之前,需要在标头中声明Struct。因此,如果可以将两者结合起来,这应该可以很好地工作。

编译器在编译main.c时如何知道InfoSession结构包含什么?您需要将结构定义放在头文件中,然后#将其包含在两个源文件中。

无法合并它们,因为这是一个需要封装的练习。此外,如果我删除函数调用,它工作正常

此外,

MySession = Session
行不正确,因为我更改了代码以便向u演示 这就是为什么在真实的程序中,我使用了一个函数,该函数存在于返回会话的另一个源文件中,因此一切都很顺利
唯一的问题是“function”调用的问题

至少这个,
My Session=Session似乎无效。永远不要使用
typedef
数据指针!或者不要尝试声明实例或访问实例的成员。您可以通过声明
struct
s来实现不透明类型,而不提供它们的主体,就像OP的代码那样,但是您不能对它们执行任何需要了解其成员和布局的操作。主要是,您可以存储指针并将其传递给其他人,包括传递给可能不不透明的函数。不能这样做,因为这是一个需要封装的练习。此外,如果我删除函数调用,它工作正常
MySession = Session