找回密码
 立即注册
查看: 323|回复: 6

在main函数和中断函数里都可见的变量应该怎样定义?

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2024-12-15 02:01:53
已绑定手机

3

主题

4

回帖

36

积分

新手上路

积分
36
发表于 2024-12-14 13:33:28 | 显示全部楼层 |阅读模式
我想定义这样一个变量:在timer0中断函数里改变这个变量的值,在main函数又可以读取这个变量的值,这种变量应该怎样定义呢?
我把这个变量定义在STC8G_H_Timer.h里不行。。。。。。
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:469
  • 最近打卡:2025-06-17 09:09:48
已绑定手机

79

主题

5137

回帖

9134

积分

超级版主

DebugLab

积分
9134
发表于 2024-12-14 13:39:35 | 显示全部楼层
全局变量
DebugLab
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2024-12-15 02:01:53
已绑定手机

3

主题

4

回帖

36

积分

新手上路

积分
36
发表于 2024-12-14 13:40:19 | 显示全部楼层

在什么地方定义它?

点评

如图 函数外的是全局变量 函数内的是局部变量 [attachimg]72702[/attachimg]  详情 回复 发表于 2024-12-14 13:42
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:469
  • 最近打卡:2025-06-17 09:09:48
已绑定手机

79

主题

5137

回帖

9134

积分

超级版主

DebugLab

积分
9134
发表于 2024-12-14 13:42:57 | 显示全部楼层
lans*** 发表于 2024-12-14 13:40
在什么地方定义它?


如图
函数外的是全局变量
函数内的是局部变量
截图202412141342213651.jpg
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:567
  • 最近打卡:2025-06-17 07:50:02

114

主题

2028

回帖

5819

积分

论坛元老

积分
5819
发表于 2024-12-14 14:31:17 | 显示全部楼层

这是c语言最基础的

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:500
  • 最近打卡:2025-06-17 17:14:03
已绑定手机
已实名认证

112

主题

2394

回帖

6026

积分

版主

积分
6026
发表于 2024-12-14 14:33:33 | 显示全部楼层

你说的这个是跨文件定义的全局变量

具体操作是:
有两个.c文件,分别是 main.ctimer.c 。他们共同引用了同一个.h文件 timer.h

  1. 如果在 timer.c定义了一个 char a=0;变量,想要在timer.c文件中引用。
  2. 就需要在 timer.h中使用 extern char a;//.h文件中的定义不可以赋值,只能声明
  3. 这下再在 timer.c中,直接使用 a=100;也没有问题了,就达到了跨文件定义全局变量的功能。

需要注意的是:原定义和extern的定义都只需要出现一起,如果有更多的.c文件需要使用这个变量,只需要引用对应的.h文件即可。不能再次重复定义,否则会出现重复定义的错误

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:112
  • 最近打卡:2025-06-10 10:45:07
已绑定手机

5

主题

118

回帖

694

积分

高级会员

积分
694
发表于 2024-12-15 18:38:11 | 显示全部楼层

shuai

高级软件工程师-唐工
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-18 07:41 , Processed in 0.140510 second(s), 102 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表