无法在-Wno-four-char-constants
找到任何文档,但我怀疑它与-Wno-multichar
类似。我是对的吗?
答案 0 :(得分:2)
他们是相关的,但不是一回事。
使用-Wall --pedantic
标志进行编译,分配:
int i = 'abc';
产生
警告:多字符字符常量[-Wmultichar]
与GCC和CLANG同时:
int i = 'abcd';
产生
GCC警告:多字符字符常量[-Wmultichar]
CLANG警告:多字符字符常量[-Wfour-char-constants]
标准(包含勘误表 TC1,TC2和TC3的C99标准,第6.4.4.4小节 - 字符常量)指出:
包含多个字符(例如
'ab'
),[...]的整数字符常量的值是实现定义的。
多字符始终解析为int
但是,由于未指定将字符打包到一个int
中的顺序,因此难以手动使用多字符常量(确切地说) value是依赖于实现的)。
编译器在处理不完整的多字符(例如'abc'
)方面也有所不同。
有些编译器在左边填充,有些编译器在右边,无论是否有字符串(某些编译器可能根本没有填充)。
可以接受完整多字符的可移植性问题的人无论如何都可能需要警告不完整的问题(-Wmultichar -Wno-four-char-constants
)。