GCC编译器选项-wno-four-char-constants和-wno-multichar

时间:2017-11-15 10:16:20

标签: gcc clang compiler-warnings gcc-warning

无法在-Wno-four-char-constants找到任何文档,但我怀疑它与-Wno-multichar类似。我是对的吗?

1 个答案:

答案 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)。