我想知道警告语句末尾(编译输出中)的警告标志显示了什么?
例如在此代码中
#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
有什么要说的?
编辑:我明白为什么会出现此警告,但我想知道此标志的含义,例如如何使用此标志删除此警告?
答案 0 :(得分:2)
这表示已启用并在您的代码中发现问题的特定警告标志。
实际问题是角色常量中有多个字符:'ghij'
如果您出于某种原因想关闭该警告,请使用-Wno-multichar
。
如果您希望将此类警告视为错误,请传递-Werror
。
答案 1 :(得分:2)
multichar
是gcc
提供给“请求或抑制警告”的选项之一
-Wmultichar
用于开启警告。-Wno-multichar
用于关闭警告。
-Wno-multichar
如果使用多字符常量(
'FOOF'
),请勿发出警告。通常它们表示用户代码中的拼写错误,因为它们具有实现定义的值,因此不应在可移植代码中使用。
答案 2 :(得分:2)
最后
-Wmultichar
必须说什么?
它表示这是启用此警告的特定标志。通常,您会使用-Wall
或-Wextra
启用多个警告,了解每个警告的来源可能很有用,例如,如果您只想禁用一个警告。
如何使用此标志删除此警告?
在启用警告的任何选项之后,将-Wno-multichar
添加到编译器选项,以禁用此警告。