c语言中,一个文件中的函数想用另一个文件中定义的结构体怎么办,用extern好像解决不了

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言中,一个文件中的函数想用另一个文件中定义的结构体怎么办,用extern好像解决不了相关的知识,希望对你有一定的参考价值。

结构体在头文件中定义,然后要使用该结构体的源文件直接导入该头文件即可。

例:结构体Node

//Node.h文件
#ifndef NODE_H
#define NODE_H
struct Node

    int data;
    Node* next;
;
#endif

//main.cpp文件
#include "Node.h"
int main()

    struct Node n;
    n.data = 0;
    n.next = NULL;
    return 0;

参考技术A 这个好办,买本c语言的教材,看一下就好,我原先也是学c的,但是那个太难太复杂,而且太普遍了,我另外选了一门语言重新学,是一门高级语言,比c有用,还简单,说实话,c太复杂了难懂了,你数学基础不行,最好别学,如果你是从事低级软件开发,可以学学,毕竟大部分低级软件都是c写出来的,比如俄罗斯方块,但是高级软件没一个用c写的

c语言 在任一个文件中定义外部变量Num,解释这句话

如果一个程序包含两个文件,在两个文件中都要用到同一个外部变量Num,不能分别在两个文件中各自定义一个外部变量Num,这样会引发“重复定义”错误;

应在任一个文件中定义外部变量Num,而在另一文件中用extern对Num作“外部变量声明”;

我不明白第二段的“在任一个文件中定义外部变量Num”中的“文件”是指什么?第一时间想到是“函数”,但显然不可能,因为外部变量若不用存储类别extern,怎么能在函数里定义呢?那“文件”究竟是指什么?

这里面说的文件就是指你工程中的其他的文件,包括所有的文件:头文件、源文件,甚至是资源文件。(头文件与源文件的本质是没有区别的。)
如果想让多个源文件公用一个全局变量,那么必须要在单独的一个头文件中(有人说在单独的cpp中也可以,我没试过,原则上说是可以的),比如新建一个头文件:globalvar.h
然后你在此文件中定义全局变量:比如说:extern int count=100;(注意:这里是定义,而不是声明,定义与声明是有严格的界限的,定义是已经分配了内存空间,这个数据已经真实存在了;声明只是告诉编译器这个符号代表的是一个什么类型的变量,将来占用多少的内存空间,但是并没有真实的分配,网上的资料很多,你可以搜索一下)。
然后在你需要此全局变量的的文件的声明一下这个变量时来自外部的就OK了,(记住是声明:extern int count;).然后别忘了把globalvar.h头文件包含进去(#include "globalvar.h")这样就可以使用这个全局变量的。

另外,把全局变量和全局函数写到同一个头文件中也是一种良好的编程习惯。不过最好少使用全局的数据和函数,那样容易破坏程序的封装性,因为每一个操作都有可能改变全局的数据。
参考技术A (1)此“文件”就是指程序中的文件啊。
(2)外部文件不用extern,也可以在文件的开头进行声明,在函数中,可以声明再主函数中;
(3)“文件”应该就是指子函数(或调用函数);本回答被提问者采纳
参考技术B 学习

以上是关于c语言中,一个文件中的函数想用另一个文件中定义的结构体怎么办,用extern好像解决不了的主要内容,如果未能解决你的问题,请参考以下文章

C语言中如何引用其它C源文件中的函数?

C语言中,是不是可以调用其它文件的函数?

C语言中的库函数定义在啥地方啊?

c语言 在任一个文件中定义外部变量Num,解释这句话

C语言中,头文件和 定义文件较多 放到不同文件夹,那么怎么样才能在定义函数时,调用头文件中的函数接口

如何在c语言中打开另一个程序?