当我编译以下代码(使用-Wall)时,我没有收到任何警告,因为我将*(str)++
强制转换为void类型。但是,如果我不将该操作强制转换为void
类型,则会出现以下警告:warning: value computed is not used [-Wunused-value]
这是正确的方法来摆脱编译器警告吗?
#include <stdio.h>
static void print(char *str)
{
while(*str) {
printf("%c\n", *str);
(void)*(str)++;
}
}
int main(void)
{
print("Hello");
return 0;
}
答案 0 :(得分:4)
摆脱那些编译器警告的正确方法是简单地执行str++;
答案 1 :(得分:2)
这是正确的,但您无需取消引用 - 您不需要*(str++)
,只需str++
。除此之外,你可能只想要
for(; *str; str++) {
printf("%c\n", *str);
}
相反。