提问人:Kay 提问时间:8/25/2022 更新时间:8/25/2022 访问量:51
指针比较警告
Pointer comparison warning
问:
我正在对内存空间中从 0 到 0x0020000 的所有单词进行 16 位校验和:
uint16_t checksum = 0;
for (uint16_t * word_val = 0; word_val < 0x0020000ul; word_val++)
{
checksum += *word_val;
}
我收到警告“指针和整数之间的比较”。如何使此警告消失?
答:
3赞
Joël Hecht
8/25/2022
#1
word_val
是一个指针,是一个整数,比较它们会导致警告。0x0020000ul
为了防止此警告,只需将整数常量转换为uint16_t指针,以便比较相同类型的数据:
uint16_t checksum = 0;
for (uint16_t * word_val = 0; word_val < (uint16_t *)0x0020000ul; word_val++)
{
checksum += *word_val;
}
评论
l
0x0020000ul