GCC编译器选项-wno四字符常量和-wno多字符

GCC编译器选项-wno四字符常量和-wno多字符,gcc,clang,compiler-warnings,gcc-warning,Gcc,Clang,Compiler Warnings,Gcc Warning,找不到有关-Wno四字符常量的任何文档,但我怀疑它类似于-Wno multichar。我说的对吗?它们是相关的,但不是同一件事 使用-Wall--pedantic标志编译,分配: int i = 'abc'; 产生: 警告:多字符字符常量[-Wmultichar] 同时使用GCC和CLANG,同时: int i = 'abcd'; 产生: GCC警告:多字符字符常量[-Wmultichar] 叮当声警告:多字符字符常量[-Wfour char constants] 本标准(包括勘误表TC

找不到有关
-Wno四字符常量的任何文档,但我怀疑它类似于
-Wno multichar
。我说的对吗?

它们是相关的,但不是同一件事

使用
-Wall--pedantic
标志编译,分配:

int i = 'abc';
产生:

警告:多字符字符常量[-Wmultichar]

同时使用GCC和CLANG,同时:

 int i = 'abcd';
产生:

GCC警告:多字符字符常量[-Wmultichar]

叮当声警告:多字符字符常量[-Wfour char constants]


本标准(包括勘误表TC1、TC2和TC3的C99标准,第6.4.4.4小节-字符常数)规定:

包含多个字符的整数字符常量的值(例如,
'ab'
),[…]由实现定义

多字符总是解析为
int
,但是,由于未指定将字符打包成一个
int
的顺序,因此很难移植使用多字符常量(确切值取决于实现)

编译器处理不完整多字符的方式也不同(例如
'abc'

有些编译器在左边填充,有些在右边填充,而不管是否为endian(有些编译器可能根本不填充)

可以接受完整多字符的可移植性问题的人可能无论如何都希望对不完整的多字符发出警告(
-Wmultichar-Wno four char constants