完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#if defined (STM32F10X_LD_VL) || (defined STM32F10X_MD_VL) || (defined STM32F10X_HD_VL)
#elif defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || (defined STM32F10X_HD_VL) 1、括号的位置对于这个语句的结果有没有影响? 2、那种才是正确的用法? |
|
相关推荐
7个回答
|
|
|
|
|
|
7762642422d 发表于 2018-9-26 09:16 这是ST3.5库文件的写法,两个都是,他们应该不会写错吧 |
|
|
|
()可以去
|
|
|
|
没影响吧
|
|
|
|
本帖最后由 moyanming2013 于 2015-5-8 22:23 编辑 对于预定义,比如 #define add(a,b) a+b//未加任何括号 #define mul(a,b) (a*b)//加了1层括号 上述看起来没有任何的错误。 如果你是用如下时: z=z*add(x,y) 会把mul替换为如下: z=z*x+y 这显然事与愿违,想要的是 z=z*(x+y) 此时问题来了,当a或b也是一个符合运算时,该如何呢?比如a为m+n时 z=z*mul(m+n,p) 此时被编译为: z=z*(m+n*p) 这显然又错了!该怎么办呢?改为: #define add(a+b) ((a)+(b))//加了所有括号 #define mul(a,b) ((a)*(b))//加了所有括号 固件库里之所以那么写,1是因为上述是判断语句,2就是STM32F10X开头的几个预定义,此前就假设不可能是一个复合语句,3就是上述显然不是同一个人写的。 都有一个预防错误的心,但是都没有写对,改为: #if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL) #elif defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL) |
|
|
|
就你的解释最为合理 |
|
|
|
不懂帮顶
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1252 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1184 浏览 3 评论
2263 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1351 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1774 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-28 18:54 , Processed in 0.794061 second(s), Total 83, Slave 67 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号