- 打卡等级:以坛为家III
- 打卡总天数:840
- 最近打卡:2026-05-13 07:31:33
荣誉版主
- 积分
- 4503
|
发表于 2026-2-26 19:23:59
|
显示全部楼层
这种现象我的理解是编译环境的版本较高,对语法检验较严格,认为不符合某种C标准,所以提出警告,大多为数据类型不明确. 但是这不是致命错误, 所以能通过编译,运行也正常. 基本可忽略不计. 但是在页面上出现警告,让人看着不舒服,是应该加以克服的.
具体到上例而言,函数的形参中, char * str 是字符串, 类型是字符型的,每个字符取值范围是0..255. 而在语句调用时, if(*str>0x80)...这就是在比较大小了. 那么取值范围是无符号的0..255呢,还是有符号的-128到+127呢? 这就模糊了, 所以要警告一下. 你加上(u8)强制转换, 数据类型明确了,也就没有警告了.
应对此类情况, 无非有两种方法, 一个是严格语法表达,二是改变Keil环境设置(比如取消同步语法检验,不警告,具体是要看keil版本在哪设置勾选的).
不知我的理解是否正确, 仅供参考了.
|
|