C:这是类型铸造的正确案例吗?

时间:2014-06-04 03:01:02

标签: c

当我编译以下代码(使用-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;
}

2 个答案:

答案 0 :(得分:4)

摆脱那些编译器警告的正确方法是简单地执行str++;

答案 1 :(得分:2)

这是正确的,但您无需取消引用 - 您不需要*(str++),只需str++。除此之外,你可能只想要

for(; *str; str++) { 
    printf("%c\n", *str);
}

相反。

另见this question