警告输出结束时的gcc警告标志。这是什么意思?

时间:2015-05-07 10:09:07

标签: c gcc

我想知道警告语句末尾(编译输出中)的警告标志显示了什么?

例如在此代码中

#include <stdio.h>

int g_var = 'ghij';

int
main(void)
{
fprintf(stderr," g_var = %d " , g_var);
return 0;
}

编译时
gcc temp.c 

编译显示此输出

  

temp.c:3:13:警告:多字符字符常量 [ - Wmultichar]

最后-Wmultichar有什么要说的?

编辑:我明白为什么会出现此警告,但我想知道此标志的含义,例如如何使用此标志删除此警告?

3 个答案:

答案 0 :(得分:2)

这表示已启用并在您的代码中发现问题的特定警告标志。

实际问题是角色常量中有多个字符:'ghij'

如果您出于某种原因想关闭该警告,请使用-Wno-multichar

如果您希望将此类警告视为错误,请传递-Werror

答案 1 :(得分:2)

multichargcc提供给“请求或抑制警告”的选项之一

  • -Wmultichar用于开启警告。
  • -Wno-multichar用于关闭警告。

来自gcc online manual

  

-Wno-multichar

     

如果使用多字符常量('FOOF'),请勿发出警告。通常它们表示用户代码中的拼写错误,因为它们具有实现定义的值,因此不应在可移植代码中使用。

答案 2 :(得分:2)

  

最后-Wmultichar必须说什么?

它表示这是启用此警告的特定标志。通常,您会使用-Wall-Wextra启用多个警告,了解每个警告的来源可能很有用,例如,如果您只想禁用一个警告。

  

如何使用此标志删除此警告?

在启用警告的任何选项之后,将-Wno-multichar添加到编译器选项,以禁用此警告。