为什么这是一个警告?我认为在很多情况下,使用多字符int常量而不是"没有意义"的数字或者用相同的值定义常量变量会更清楚.当解析wave/tiff/其他文件类型时,更清楚地将读取的值与一些‘EVAW’、‘DATA’等进行比较,而不是它们的相应值.
示例代码:
int waveHeader = 'EVAW';
为什么这是一个警告?
为什么这是一个警告?我认为在很多情况下,使用多字符int常量而不是"没有意义"的数字或者用相同的值定义常量变量会更清楚.当解析wave/tiff/其他文件类型时,更清楚地将读取的值与一些‘EVAW’、‘DATA’等进行比较,而不是它们的相应值.
示例代码:
int waveHeader = 'EVAW';
为什么这是一个警告?
According to the standard(§6.4.4.4/10)
包含一个以上的整数字符常量的值 字符(例如,‘ab’),[.]是由实现定义的.
long x = '\xde\xad\xbe\xef'; // yes, single quotes
这是有效的ISO 9899:2011 C.它编译时没有警告,在gcc
以下有-Wall
,在"多字符常量"警告下有-pedantic
.
多字符常量(例如"xy")是有效的,但很少有效
为了便于携带,不要将多字符常量与整数类型一起使用.