error:#28: expression must、error:#29: expected an和warning:#186-D: pointless comparison

error: #28: expression must have a constant value

表达式必须有一个常量值

问题代码

void Example(uint8_t cycle)
{
	...
	static uint8_t level=cycle/100;
	... 
}

位于静态存储区的变量不支持定义时使用变量赋初值,这意味着下面代码是合法的

void Example(uint8_t cycle)
{
	...
	uint8_t level=cycle/100;
	... 
}

error: #29: expected an expression

期望表达式

#29报错是比较常见的报错,一般是语法问题,与之相配套的可能会有#65,检查一下报错位置的语法问题。例如:

#define sda_high()      Gpio_Set(SDA_NUMBER,SDA_PIN)
#define sda_Low ()      Gpio_Reset(SDA_NUMBER,SDA_PIN)

另外一种比较隐性的是MDK编译器,默认编译时支持C90标准,有时需要在设置里打开C99标准

魔术棒—C/C+±–C99 Mode

warning: #186-D: pointless comparison of unsigned integer with zero

无符号整数与零的无意义比较

比较低级的问题了,无符号整数没有负数,该条件会恒为真,例如

void Exzample(uint8_t array)
{
	if(array>=0)
	{
		...
	}
}

一般出现这种问题是范围判断,书写时有可能不会注意到这个问题。例如

void Exzample(uint8_t array)
{
	if(0<=array && array<=60)
	{
		...
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值