OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3634|回复: 14

定义变量问题

[复制链接]

32

主题

146

帖子

0

精华

高级会员

Rank: 4

积分
642
金钱
642
注册时间
2017-7-25
在线时间
129 小时
发表于 2018-2-2 16:51:07 | 显示全部楼层 |阅读模式
5金钱
Rebuild target 'CAN'
compiling main.c...
main.c(14): warning:  #1295-D: Deprecated declaration gets19file - give arg types
  u8 gets19file();
main.c(23): warning:  #177-D: variable "recback" was declared but never referenced
                u8 feedback1,recback;
main.c(26): warning:  #550-D: variable "res" was set but never used
                u8 res;
main.c(29): warning:  #550-D: variable "data_ff_fe" was set but never used
          u8 data_ff_fe[8];
main.c(115): warning:  #940-D: missing return statement at end of non-void function "gets19file"
  }
main.c(72): warning:  #550-D: variable "res" was set but never used
           u8 res;
main.c(75): warning:  #550-D: variable "data" was set but never used
           u8 data[24];
main.c(77): warning:  #550-D: variable "data_ff_fe" was set but never used
       u8 data_ff_fe[8];   
main.c: 8 warnings, 0 errors
compiling stm32f4xx_it.c...
compiling system_stm32f4xx.c...
compiling led.c...
compiling lcd.c...
compiling key.c...
compiling can.c...
compiling delay.c...
compiling sys.c...
compiling usart.c...
assembling startup_stm32f40_41xxx.s...
compiling misc.c...
compiling stm32f4xx_gpio.c...
compiling stm32f4xx_fsmc.c...
compiling stm32f4xx_rcc.c...
compiling stm32f4xx_syscfg.c...
compiling stm32f4xx_usart.c...
compiling stm32f4xx_can.c...
linking...
Program Size: Code=8368 RO-data=424 RW-data=48 ZI-data=1832  
FromELF: creating hex file...
"..\OBJ\CAN.axf" - 0 Error(s), 8 Warning(s).
Build Time Elapsed:  00:00:16




编译为什么会出现这种警告,定义的变量在程序中有用到,为什么编译后说我没有用到呢,那位大神可以给我解释一下吗,谢谢


最佳答案

查看完整内容[请看2#楼]

就是定义的是一个局部变量,用来存储接收数据,编译器认为这个变量不需要,优化掉了,所以仿真是你也看不到这个变量,换成全局变量就没这种问题了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

45

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4542
金钱
4542
注册时间
2013-12-27
在线时间
491 小时
发表于 2018-2-2 16:51:08 | 显示全部楼层
就是定义的是一个局部变量,用来存储接收数据,编译器认为这个变量不需要,优化掉了,所以仿真是你也看不到这个变量,换成全局变量就没这种问题了
回复

使用道具 举报

2

主题

45

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4542
金钱
4542
注册时间
2013-12-27
在线时间
491 小时
发表于 2018-2-2 16:55:05 | 显示全部楼层
局部接收数据的,编译时被编译器优化掉了
回复

使用道具 举报

32

主题

146

帖子

0

精华

高级会员

Rank: 4

积分
642
金钱
642
注册时间
2017-7-25
在线时间
129 小时
 楼主| 发表于 2018-2-5 10:59:02 | 显示全部楼层
沐唐 发表于 2018-2-2 16:55
局部接收数据的,编译时被编译器优化掉了

局部接收数据是什么意思
回复

使用道具 举报

4

主题

380

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3088
金钱
3088
注册时间
2015-10-17
在线时间
320 小时
发表于 2018-2-5 13:56:05 | 显示全部楼层
你定义了变量,但是变量没有使用。
回复

使用道具 举报

32

主题

146

帖子

0

精华

高级会员

Rank: 4

积分
642
金钱
642
注册时间
2017-7-25
在线时间
129 小时
 楼主| 发表于 2018-2-5 14:12:17 | 显示全部楼层
hgr211 发表于 2018-2-5 13:56
你定义了变量,但是变量没有使用。

变量已经用了,没有用的变量我一般都会将其清除的
回复

使用道具 举报

32

主题

146

帖子

0

精华

高级会员

Rank: 4

积分
642
金钱
642
注册时间
2017-7-25
在线时间
129 小时
 楼主| 发表于 2018-2-5 14:18:09 | 显示全部楼层
沐唐 发表于 2018-2-5 11:34
就是定义的是一个局部变量,用来存储接收数据,编译器认为这个变量不需要,优化掉了,所以仿真是你也看不到 ...

123.png
这样定义程序在编译的时候不会出现之前的那写警告,在main()函数内部定义变量和外部定义变量就像我这样,有什么区别,如果说在main函数外部定义的变量是全局变量,那用extern 定义的全局变量和这个全局变量又有什么区别呢,还望大神能够劳神解释一下,谢谢!
回复

使用道具 举报

2

主题

45

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4542
金钱
4542
注册时间
2013-12-27
在线时间
491 小时
发表于 2018-2-6 09:32:33 | 显示全部楼层
函数外部定义的是全局变量,extern 的作用是引用其他文件定义的全局变量的,只是个引用,他没有定义的作用
回复

使用道具 举报

15

主题

866

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7546
金钱
7546
注册时间
2016-11-30
在线时间
642 小时
发表于 2018-2-6 09:35:42 | 显示全部楼层
如果你定义了变量,而且程序给变量赋值了,但是没有在其它地方使用变量里的值,编译器就会认为这个变量可以不用,虽然你给它赋值了。
回复

使用道具 举报

4

主题

380

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3088
金钱
3088
注册时间
2015-10-17
在线时间
320 小时
发表于 2018-2-6 09:37:11 | 显示全部楼层
单纯的赋值,你赋值1万遍,也不算使用
回复

使用道具 举报

32

主题

146

帖子

0

精华

高级会员

Rank: 4

积分
642
金钱
642
注册时间
2017-7-25
在线时间
129 小时
 楼主| 发表于 2018-2-6 13:31:43 | 显示全部楼层
本帖最后由 邦尼power 于 2018-2-6 13:37 编辑
hgr211 发表于 2018-2-6 09:37
单纯的赋值,你赋值1万遍,也不算使用

不是单纯的赋值,已经解决了,谢谢您的解答
回复

使用道具 举报

32

主题

146

帖子

0

精华

高级会员

Rank: 4

积分
642
金钱
642
注册时间
2017-7-25
在线时间
129 小时
 楼主| 发表于 2018-2-6 13:33:06 | 显示全部楼层
lvkanger 发表于 2018-2-6 09:35
如果你定义了变量,而且程序给变量赋值了,但是没有在其它地方使用变量里的值,编译器就会认为这个变量可以 ...

我就定义个一个单纯的变量,初值都没有给过
回复

使用道具 举报

32

主题

146

帖子

0

精华

高级会员

Rank: 4

积分
642
金钱
642
注册时间
2017-7-25
在线时间
129 小时
 楼主| 发表于 2018-2-6 13:34:00 | 显示全部楼层

下次出现这类问题应该就能解决了
回复

使用道具 举报

32

主题

146

帖子

0

精华

高级会员

Rank: 4

积分
642
金钱
642
注册时间
2017-7-25
在线时间
129 小时
 楼主| 发表于 2018-2-6 13:36:23 | 显示全部楼层
如果哪位朋友遇到了这种事,那就将变量定义放到main()函数上面定义就好了及定义成全局变量,同时谢谢各位大神的慷慨解答,再次感谢
回复

使用道具 举报

0

主题

1

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2017-5-22
在线时间
7 小时
发表于 2019-7-26 16:44:07 | 显示全部楼层
遇到相同的问题,添加volatile关键字解决。
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-6 20:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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