今天调试系统的时候,需要定义几个全局位变量,定义好后一编译,发现错误一大堆,错误基本都是位变量定义时产生的。以前也定义过全局变量啊,但是先前怎么没错误?瞎折腾了一会最后还是发现问题出在细节上面了。以前只是侥幸没遇到而已。今天做个总结,以后再忘记了就回来直接查一下。

我们都知道定义在函数外部的变量就叫做全局变量,但是通常只有一个C文件和一个H文件的时候那样定义是不会出问题的。一个大的系统会包含好多个.C文件和.H文件,每个.C文件都有可能会访问全局变量,所以全局变量在定义的时候就要稍微做下改变了。通常的做法是建立一个包含系统所有全局变量的.H文件,系统用到的所有全局变量都定义在该文件内,文件名可以用Global修饰一下。在该文件中定义某个全局变量的时候需要用extern声明该变量为外部变量。比如要定义SysEventCounter标志为unsigned char型的全局变量可以这样定义:

extern unsigned char SysEventCounter;

上述声明是写在.H文件中的。其他.C文件若要用到该变量,直接包含该.H文件就可以了

如果想要赋初值,可以在用到它的.C文件中这样写:

unsigned char SysEventCounter = 0;

不用赋初值时,直接

unsigned char SysEventCounter;

就可以了。注意:只需要在一个.C文件中写即可,其他.C文件直接可以用。如果在其他.C文件中也这样写会产生重复定义的错误。

全局变量对变量的类型不限制,任何类型都可以,只要按照上述方法定义就不会有错误。

重要的是搞清楚C里面的声明和定义的概念,一个全局变量可以声明多次,但是只能定义一次。

还要注意的是,静态全局变量和全局变量是有区别的,静态全局变量被多个单元引用后,相对于被定义了多次,而且相当于是各个文件独立的全局变量,而全局变量要在整个系统中公用,那么引用它的源文件只需要用extern做声明即可,注意的是:全局变量只需要在任何一个文件中有且只定义一次即可。

c语言全局变量6,C语言全局变量定义方法相关推荐

  1. C语言全局变量定义方法

    C语言全局变量定义方法 今天调试系统的时候,需要定义几个全局位变量,定义好后一编译,发现错误一大堆,错误基本都是位变量定义时产生的.以前也定义过全局变量啊,但是先前怎么没错误?瞎折腾了一会最后还是发现 ...

  2. c语言结果用全局变量返回,c语言参数传递和返回值及变量存储.doc

    unsigned int n; void f1(); int f2(int,int); void far f3(); main() { n=0; f1(); n=f2(1,2); f3(); } vo ...

  3. 在c语言中函数的定义变量的值为,变量定义(C语言中变量的声明和定义)

    变量定义(C语言中变量的声明和定义),哪吒游戏网给大家带来详细的变量定义(C语言中变量的声明和定义)介绍,大家可以阅读一下,希望这篇变量定义(C语言中变量的声明和定义)可以给你带来参考价值. 3.函数 ...

  4. 【C语言】七、函数(定义调用嵌套参数储存等)

    这里写目录标题 1 函数的定义与调用 1.1 函数的定义 1.1.1 函数的分类 1.1.2 函数的定义 1.2 函数的返回值与函数类型 1.3 对被调用函数的说明和函数原型 函数声明 1.4 函数的 ...

  5. c++结构体定义和使用_【C语言更新】结构体的定义及使用

    文/Edward首先先思考一个问题,假设某一天你去了一家策划公司,接到了一个策划需求,比如为新上市的某款手机写一个市场推广的文案,并且在电脑上面打印出来.那么在写这个文案的时候,你肯定是会需要着重地去 ...

  6. 【C++ 语言】引用数据类型 ( 引用数据类型定义 | 引用数据类型使用 | 引用类型参数 )

    文章目录 引用类型 引用类型 引用数据类型 : 1. 引用数据类型定义 : 类型名称& 变量名 = 对应类型变量名称 ; //① 定义 普通 类型 变量int a = 8;//② 定义 引用类 ...

  7. 动态语言,静态类型,强类型定义语言,弱类型定义语言,

    1 动态语言和静态语言 通常我们所说的动态语言.静态语言是指动态类型语言和静态类型语言.    1 动态类型语言:动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时 ...

  8. python语言学习:python语言学习中的定义类、定义函数、封装api等详细攻略

    python语言学习:python语言学习中的定义类.定义函数.封装api等详细攻略 目录 python语言学习中的定义类 python语言学习中的定义函数 python语言学习中封装api pyth ...

  9. 单片机c语言字符,单片机C语言中变量的定义方法解析

    描述 1.C语言中变量的定义方法 -C语言中变量定义语法为: #pragma rambank0 :即以关键词#pragma开始,rambank0指明资料区块为第0块. unsigned char m_ ...

  10. C语言基本变量类型及变量的定义

    C语言基本变量类型及变量的定义 这期讲一些关于,变量的,包含变量类型及变量的定义 1.变量类型: #include <stdio.h>int bian; //范围在-2^15 ~2^15- ...

最新文章

  1. SQL Server主从数据库同步方式及同步问题解决方案总结
  2. JPA的泛型DAO设计及使用
  3. oracle 方言报错,ORACLE11g:No Dialect mapping for JDBC type: -9解决方案详解
  4. 签约华佗致力精准饮食 谋定·健康中国-李喜贵:健康干预治未病
  5. 快速融入新团队的一点个人体会
  6. 27对象的向上向下转型
  7. endnote修改正文中参考文献标注_请问endnote里,如何把正文中插入参考文献处的格式由数字转为(作者,年份)?感恩!...
  8. transCAD求解两路径问题中遇到的问题和解决方法
  9. 数学建模matlab画图操作大全
  10. 2021年9月份最新数据库排行榜出炉
  11. 数据时代建设医疗数据,主要有哪些意义?
  12. aac +sbr +ps
  13. 【技术美术图形部分】2.2 模型与材质基础
  14. OneDrive登录失败
  15. 计算机科学研究算法的局限性,CNCC2018 分论坛(6) | 研究经典计算机算法已经过时了吗?...
  16. 登陆163邮箱显示服务器验证失败是什么原因?微信怎么登陆邮箱?
  17. 灰度图像--图像分割 阈值处理之谷底阈值、峰顶平均
  18. 设计计算机程序时 要考虑计算的过程,算法和程序设计练习题
  19. 石油专业:一文入门机器学习,以测井岩性分类预测为例
  20. 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第45讲:PHP程序设计中的session技术

热门文章

  1. python编辑数学公式_最好用的文字与公式编辑器,这套数学笔记神器送给你
  2. 计算机组成原理奉远祯,计算机组成原理笔记.doc
  3. 各大搜索引擎站点提交入口大全
  4. visio无法修改流程图的形状格式
  5. Delphi下使用并口控制打印机的方法
  6. Ubuntu搭建KMS服务
  7. IOTQQ(OPQbot)—QQ机器人、部署在linux上(一步步实
  8. Robo 3T安装及使用
  9. matlab各种文件读写,Matlab的各种数据读取、文件读写等操作汇总
  10. matlab中如何画柱状图,如何在用Matlab画柱状图