c语言怎样声明和定义全局变量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言怎样声明和定义全局变量相关的知识,希望对你有一定的参考价值。

定义在函数体外部的变量叫全局变量,

要定义全局变量你只要把变量定义在

所有函数外部即可。

要注意的是,全局变量只对它定义位

置以下的函数可见。

#include<stdio.h> 

void f1();
void f2();
int y=100;
int main()


printf("%d\\n\\n",y);
//printf("%d\\n",x);这不可以读x,x对main()不可见 
f1();
f2();
return 0;



int x;
void f1()

x=200;
 

void f2()

printf("%d\\n",x);
printf("%d\\n",y);

参考技术A 1、全局变量的定义和普通变量的定义相同,只是在别的cpp文件中使用前需要用extern修饰符声明。2、extern可置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量或函数时,在其它模块中寻找其定义。另外,extern也可用来进行链接指定。 参考技术B extern是声明
只有涉及多个文件的全局变量才需要使用extern
比如,当文件a,b都需要访问一个全局变量val时,就要在文件a,b中声明如下
extern int val;

如果只是在同一文件中使用这个全局变量就不需要extern了。
参考技术C 对,必须用extern声明,因为要涉及多个文件,不用extern的话会导致编译链接出现问题。不过不建议用全局变量,面向对象要求低耦合 参考技术D 如果要是你只编写一个C文件的话,全局变量在main 函数和其他定义的函数之外定义就行啦;
但如果涉及到两个或者两个以上的C文件,定义全局变量要用到extern

KEIL中全局变量,变量类型,LED灯,勿在中断延时

参考技术A

第一次做蓝桥杯的题(第七届,模拟液位检测警告),熟练了各模块之后,再想好逻辑,其实也没那么难,做了挺长时间,之后继续努力,碰到几个坑记录一下。

方法一
在一个文件里面定义了一个全局变量,如果想在其他文件使用,则要在这个文件中用 extern 声明。(1)定义时可以初始化。(2) extern 不能初始化 ,否则会报错。
例:在 init.c 中声明了 u32 TimingDelay = 0;
  在 main.c 中使用此变量,需声明 extern u32 TimingDelay;

方法二
在init.c中定义且初始化: u32 TimingDelay = 0;
再在init.h中用extern声明: extern u32 TimingDelay;
最后在main.c中包含init.h: #include "init.h"

今天因为数据类型的问题 LCD 显示总是错误,顺手查了一波。

在C语言中有6种基本数据类型:short、int、long、float、double、char
1)整型:short int、int、long int
2)浮点型:float、double
3)字符类型:char
u8,u16,u32 都是以上类型的不同形式。
由于项目中数据不是很大,整数或字符使用 u8 就可以了,类型转换什么的也都OK,TimingDelay 习惯上 u32,其余的也可以根据函数的数据类型确定。
需要注意的是 浮点数不可用 u8 等表示 ,目前没发现有替换 float 类型的,还是乖乖用 float就好了。

板子 LED 灯所连的 GPIO 口可能与其他模块在板子内部共用,所以每次点亮一个或几个 LED 灯时,要 关闭其他灯

今天在做题时,一开始在中断服务函数中应用了 delay_ms(200) 结果,板子直接卡住不动了,查资料后发现,最好 不要在中断服务函数中应用延时

以上是关于c语言怎样声明和定义全局变量的主要内容,如果未能解决你的问题,请参考以下文章

C语言中如何定义全局变量

全局变量怎么定义

javascript定义了一个全局变量,怎么在局部变量中修改该变量的值?

C语言中用const声明全局变量赋初值和不赋初值有何区别?变量存放位置有啥不一样?

KEIL中全局变量,变量类型,LED灯,勿在中断延时

c语言中,声明和定义有啥区别