为什么这是警告?我认为,在许多情况下,使用多字符int常量代替“无意义”数字或用相同的值定义const变量更为明确。解析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:2011C。在
gcc
下使用-Wall
进行编译时没有警告,而在-pedantic
下使用“多字符字符常量”警告进行编译。从Wikipedia:
多字符常量(例如'xy')有效,尽管很少
有用–他们让一个整数存储几个字符(例如4
ASCII字符可以为32位整数,8位为64位整数)。
由于字符打包成一个int的顺序不是
规定,多字符常量的可移植使用是困难的。
出于可移植性考虑,请勿将多字符常量与整数类型一起使用。
关于c++ - 多字符常量警告,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24043993/