打印

全局变量问题

[复制链接]
2319|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
langgao183|  楼主 | 2013-5-20 12:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问:我定义了一个.h和两个.C;例如:1.h   2.c   3.c  我在1.h定义全局变量 extern unsigned char  a;
我在3.c的程序中调用2.c的程序,并且在2.c中给a装值,因为我想是全局变量,就没有用return返回a,在3.c使用的时候全是 0。这问题出在哪里??
沙发
yewuyi| | 2013-5-20 14:49 | 只看该作者
请问:我定义了一个.h和两个.C;例如:1.h   2.c   3.c
我在1.h定义全局变量 extern unsigned char  a;
RE:这个不叫定义,这叫着声明,请搞清楚定义和声明的区别
我在3.c的程序中调用2.c的程序,并且在2.c中给a装值,因为我想是全局变量,就没有用return返回a,
在3.c使用的时候全是 0。这问题出在哪里??

使用特权

评论回复
板凳
yewuyi| | 2013-5-20 14:54 | 只看该作者
在C语言中虽然在H文件和C文件都可以定义和声明,但很容易弄混,不偏于文件管理,所以在规范的企业内部都有严格的C语言的程序的书写规范,变量的定义、声明、使用上通常的规定如下:
1、在C文件中定义变量
2、在H文件中声明变量
3、每个C文件都对应一个与自己同名的H文件
4、在每个C文件的开头使用include与自己同名的H文件。
5、例如在2.C文件定义了一个变量,想在3.C文件中使用,则应该在3.H文件使用extern声明其为外部变量,然后在3.c的开头包含3.H文件,此后就可以在3.C文件使用这个变量了。

使用特权

评论回复
地板
yewuyi| | 2013-5-20 14:55 | 只看该作者
C语言的基础知识问题还是需要你自己百度或阅读相关**学习的,这些问题拿上来,说明大学都没好好学习,应该拉出去打屁股的。

使用特权

评论回复
5
langgao183|  楼主 | 2013-5-20 14:57 | 只看该作者
yewuyi 发表于 2013-5-20 14:49
请问:我定义了一个.h和两个.C;例如:1.h   2.c   3.c
我在1.h定义全局变量 extern unsigned char  a;
R ...

难道在1.h中unsigned char a;   在2.c这样extern unsigned char  a;
是不是这样才可以的????????

使用特权

评论回复
6
yewuyi| | 2013-5-20 15:00 | 只看该作者
langgao183 发表于 2013-5-20 14:57
难道在1.h中unsigned char a;   在2.c这样extern unsigned char  a;
是不是这样才可以的??????? ...

可以这样,这样可以编译通过。

但这些写基本没啥好处,如同盖房子,你非的把房子的大门朝天开,然后每天爬梯子进房屋,虽然可以,但显然是弊端多多。

使用特权

评论回复
7
1521732588| | 2013-5-20 15:21 | 只看该作者
yewuyi,太佩服了,你懂的真多

使用特权

评论回复
8
langgao183|  楼主 | 2013-5-20 15:28 | 只看该作者
yewuyi 发表于 2013-5-20 14:55
C语言的基础知识问题还是需要你自己百度或阅读相关**学习的,这些问题拿上来,说明大学都没好好学习,应 ...

丑大了!!谢谢版主。我的解决了,就是在1.h   extern unsigned char  a; 然后在2.c中 unsigned char a; 暂时先养着这习惯先

使用特权

评论回复
9
SevenWans| | 2013-5-21 11:08 | 只看该作者
我觉得在在2.c中定义并且在2.h的头文件中申明 extern 就可以了,3.c中要使用就包含2.h就可以了!不知道这样使用有弊端没?

使用特权

评论回复
10
yewuyi| | 2013-5-21 11:58 | 只看该作者
SevenWans 发表于 2013-5-21 11:08
我觉得在在2.c中定义并且在2.h的头文件中申明 extern 就可以了,3.c中要使用就包含2.h就可以了!不知道这样 ...

弊端显而易见,就是不便于**、查询、管理变量和函数的定义和声明,如果一一对应,你移植的时候,只要拷贝对应C文件和H文件即可,不需要的H文件就不拷贝。

C语言的书写要求非常自由,但这种自由往往给年轻人工程师造成的是麻烦,而不是帮助。

使用特权

评论回复
11
yewuyi| | 2013-5-21 12:00 | 只看该作者
只要能编译通过,C语言的书写没有绝对的规则,推荐规则只是鉴于多数人的使用习惯和**习惯,但如果你非常熟悉且习惯了另一种方法,则不改也无妨,但如果是大工程师,需要多人会同编程时,则需要按照同一个规则书写代码

使用特权

评论回复
12
SevenWans| | 2013-5-21 13:09 | 只看该作者
yewuyi 发表于 2013-5-21 11:58
弊端显而易见,就是不便于**、查询、管理变量和函数的定义和声明,如果一一对应,你移植的时候,只要拷 ...

虽然没怎么看懂,但是我觉得你讲得很有道理!学习了,谢谢!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

112

帖子

1

粉丝