c语言中 多文件中的 结构体调用 需要注意什么?为什么我的使用中总提示结构体未定义?

作者&投稿:望杰 (若有异议请与网页底部的电邮联系)
C语言中定义一个结构体如何在不同的.C文件中使用。~

比如三个.c文件一个.h文件
c 2.c 3.c 4.h
这三个头文件都引用4.h include
4.h中定义一个结构体类型struct test{};
1.c中定义一个该结构体类型的全局变量struct test mode;
4.h中extern struct test mode;
其他.c文件就可以直接使用这个结构体变量了,并且是共用的

引用结构体有引用类型,和引用全局变量两种方式。

1 引用类型。
需要将结构体定义与头文件中(.h文件),然后在需要引用类型的源文件(.c)中,均引用该头文件,即可使用该类型。

2 引用全局变量。
要引用全局变量,需要先引用类型,之后在一个源文件中定义全局变量,在其它源文件中声明该全局变量,即可使用。
比如结构体为struct test, 定义全局变量为
struct test glabol_test;
在其它文件中,只需要
extern struct test globol_test;
即可在对应文件声明所在行之下进行调用。

PS:该声明部分,也可以写在定义结构体的头文件中。

将这两个文件放到同一级目录,在主文件所在的文件(main)的头部 include "Felname.C";
不要把那个文件写好后才进行这个操作,两个文件随时要保持同步,写下编译一下,两个文件对接好后,再展开,不过写的同时,要多编译。有错误在一个文件不会出现,到那个文件会出现。因为C本身就是面向过程的,如果是C++,JAVA(面向对象)这种问题不需要问的。


灵武市17192016276: c语言一个结构体如何在多个源文件里面调用? -
茶弘爱普: foo.h文件里面写 #ifndef _FOO_H_ #define _FOO_H_ struct foo { int date; }; #endif 然后每一个需要这个结构体的文件都加头文件 foo.h

灵武市17192016276: C语言中如何在多个文件中引用同一个结构体 -
茶弘爱普: 引用结构体有引用类型,和引用全局变量两种方式.1 引用类型. 需要将结构体定义与头文件中(.h文件),然后在需要引用类型的源文件(.c)中,均引用该头文件,即可使用该类型.2 引用全局变量. 要引用全局变量,需要先引用类型,之后在一个源文件中定义全局变量,在其它源文件中声明该全局变量,即可使用. 比如结构体为struct test, 定义全局变量为 struct test glabol_test; 在其它文件中,只需要 extern struct test globol_test; 即可在对应文件声明所在行之下进行调用.PS:该声明部分,也可以写在定义结构体的头文件中.

灵武市17192016276: c语言中,想用到另一个.c文件中定义的结构体,如何操作 -
茶弘爱普: 类型定义要放在头文件中,然后在需要用这个类型的文件中包含对应的头文件.

灵武市17192016276: C语言中定义一个结构体如何在不同的.C文件中使用. -
茶弘爱普: 比如三个.c文件一个.h文件 1. c 2.c 3.c 4.h 这三个头文件都引用4.h include<4.h>4.h中定义一个结构体类型struct test{}; 1.c中定义一个该结构体类型的全局变量struct test mode;4.h中extern struct test mode;其他.c文件就可以直接使用这个结构体变量了,并且是共用的

灵武市17192016276: C语言编程 结构体让多个CPP使用 -
茶弘爱普: 变量声明不能放在头文件中,因为很容易造成重定义. 假如有如下结构体 typedef struct A {char a[10]; } A; 那在main函数所在的cpp中,这样定一个该结构体的变量: A a; 在其他需要使用该变量的cpp文件中,加如下语句: extern A a; 这样其他cpp文件也就可以用了.

灵武市17192016276: c语言中 多文件中的 结构体调用 需要注意什么?为什么我的使用中总提示结构体未定义? -
茶弘爱普: 将这两个文件放到同一级目录,在主文件所在的文件(main)的头部 include "Felname.C"; 不要把那个文件写好后才进行这个操作,两个文件随时要保持同步,写下编译一下,两个文件对接好后,再展开,不过写的同时,要多编译.有错误在一个文件不会出现,到那个文件会出现.因为C本身就是面向过程的,如果是C++,JAVA(面向对象)这种问题不需要问的.

灵武市17192016276: C语言中,将多个结构体数据写到一个文件中,应该如何读取? -
茶弘爱普: C语言把一个结构体数组写入文件分三步:1、以二进制写方式(wb)打开文件2、调用写入函数fwrite()将结构体数据写入文件3、关闭文件指针 相应的,读文件也要与之匹配:1、以二进制读方式(rb)打开文件2、调用读文件函数fread()...

灵武市17192016276: c语言的结构体与结构体文件的调用问题 -
茶弘爱普: 首先,你那个文件里面的数据都是字符型的.如果你想读取文件里面的数据到对应的数据类型的话,请用fscanf()函数.#include <stdio.h>#include<stdlib.h>#include<conio.h>#include<string.h> struct shop{ char ID[6]; char sname[10]; float price...

灵武市17192016276: 在c语言中,建立一个工程,当多个源文件要使用结构体变量时,我们应该在哪声明和定义,应该怎样声明? -
茶弘爱普: a.c int var;//定义的地方 b.c extern int var;//声明表明你在其它地方定义过,然后就可以用了

灵武市17192016276: c语言 ,如何从文件中读写多个结构体 结构体以节点形式,链表链接起来
茶弘爱普: 在计算机内存中,各个结点的存放地址是动态分配的,也就是说,即使连续申请两个结点空间,这两块空间也不一定是相连的.将结构体数据存入磁盘时,通常是以二进制格式块状写入,写语句是fwrite(&amp;pnode,sizeof(struct node),1,fp);.将多个结构体写入同一个数据文件时,由于各个结构体占用的字节数不同,所以在磁盘中占用的空间也不同,故各个结构体的写入顺序必须记录在案,以便以后读出数据时,按同样的顺序进行.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网