OpenEdv-开源电子网

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

结构体中的某个变量不赋值直接代入函数使用,初始值是什么?

[复制链接]

3

主题

7

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
242
金钱
242
注册时间
2019-12-17
在线时间
8 小时
发表于 2020-4-18 19:32:04 | 显示全部楼层 |阅读模式
1金钱
图中的EXTI_InitStructure结构体中的第四个变量:FunctionalState没有赋值,直接代入EXTI_Init()中使用,为什么还能顺利编译?
微信图片_20200418192636.png

最佳答案

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

编译过程只会检查程序的语法错误,不会检查逻辑性错误,也就是你的程序不能达到你想实现的功能,但是语法没有错误,编译就能通过。就好像你定义一个变量int a; 然后a++; 此时编译可以通过,不会有错误和警告。程序可以实现a自加1,但是因为你没有赋初值,此时的a是一个不确定的数,程序跑出来的结果就不一定是你想要的结果了。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

89

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1286
金钱
1286
注册时间
2020-4-7
在线时间
309 小时
发表于 2020-4-18 19:32:05 | 显示全部楼层
编译过程只会检查程序的语法错误,不会检查逻辑性错误,也就是你的程序不能达到你想实现的功能,但是语法没有错误,编译就能通过。就好像你定义一个变量int a;  然后a++;  此时编译可以通过,不会有错误和警告。程序可以实现a自加1,但是因为你没有赋初值,此时的a是一个不确定的数,程序跑出来的结果就不一定是你想要的结果了。
回复

使用道具 举报

3

主题

7

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
242
金钱
242
注册时间
2019-12-17
在线时间
8 小时
 楼主| 发表于 2020-4-20 10:11:45 | 显示全部楼层
不赋值应该是 0 吧,0 是 DISABLE ,就不是使能了,不符合逻辑要求了呀。。。
回复

使用道具 举报

15

主题

317

帖子

0

精华

高级会员

Rank: 4

积分
859
金钱
859
注册时间
2015-2-12
在线时间
353 小时
发表于 2020-4-20 10:48:50 | 显示全部楼层
1、编译器编译成功,说明语法没有错误,与结构变量是否初始化没有关联。
2、外部中断使能与否,取决于是否使用它(disable or enable)。
3、MUC芯片系统复位后,外部中断使能寄存器缺省是disable。详情可以查看手册,复位时的寄存器值。
回复

使用道具 举报

3

主题

7

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
242
金钱
242
注册时间
2019-12-17
在线时间
8 小时
 楼主| 发表于 2020-4-20 10:55:48 | 显示全部楼层
csmjmcc 发表于 2020-4-20 10:48
1、编译器编译成功,说明语法没有错误,与结构变量是否初始化没有关联。
2、外部中断使能与否,取决于是否 ...

这个正点原子外部中断教学例程里的一段,功能就是 使能该中断,但是他没有 赋值 ENABLE 给 EXTI_LineCmd,但是该中断确实被使能了,原因不知道为什么。
回复

使用道具 举报

15

主题

317

帖子

0

精华

高级会员

Rank: 4

积分
859
金钱
859
注册时间
2015-2-12
在线时间
353 小时
发表于 2020-4-20 11:03:58 | 显示全部楼层
JASON1689 发表于 2020-4-20 10:55
这个正点原子外部中断教学例程里的一段,功能就是 使能该中断,但是他没有 赋值 ENABLE 给 EXTI_LineCmd ...

要用到,就肯定有使能的,请搜索下该命令。
回复

使用道具 举报

3

主题

7

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
242
金钱
242
注册时间
2019-12-17
在线时间
8 小时
 楼主| 发表于 2020-4-21 21:44:22 | 显示全部楼层
csmjmcc 发表于 2020-4-20 11:03
要用到,就肯定有使能的,请搜索下该命令。

他讲解的视频里是使能的,但是光盘中的例程里边没有给这个参数赋值,不知道为啥还能通过。。。
回复

使用道具 举报

3

主题

7

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
242
金钱
242
注册时间
2019-12-17
在线时间
8 小时
 楼主| 发表于 2020-4-21 21:55:10 | 显示全部楼层
csmjmcc 发表于 2020-4-20 11:03
要用到,就肯定有使能的,请搜索下该命令。

我在这个位置硬加一个赋值语句,把 DISABLE 赋值给 EXTI_InitStructure.EXTI_LineCmd ,中断就关闭了;去掉该赋值之后,中断又能恢复正常;可见不赋值时,默认是 ENABLE ,为什么会出现这种情况?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-26 00:32

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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