Опции компилятора GCC -wno-four-char-constants и -wno-multichar
Не удалось найти документацию по -Wno-four-char-constants
Однако я подозреваю, что это похоже на -Wno-multichar
, Я прав?
1 ответ
Они связаны, но не одно и то же.
Компиляция с -Wall --pedantic
Флаги, назначение:
int i = 'abc';
производит:
предупреждение: многосимвольная символьная константа [-Wmultichar]
как с GCC, так и с CLANG, при этом:
int i = 'abcd';
производит:
Предупреждение GCC: константа из нескольких символов [-Wmultichar]
Предупреждение CLANG: константа из нескольких символов [-Wfour-char-constants]
Стандарт (стандарт C99 с исправлениями TC1, TC2 и TC3, подраздел 6.4.4.4 - символьные константы) гласит:
Значение целочисленной символьной константы, содержащей более одного символа (например,
'ab'
), [...] определяется реализацией.
Мульти-символ всегда разрешается int
но, поскольку порядок, в котором персонажи упакованы в один int
не указано, переносимое использование многосимвольных констант затруднено (точное значение зависит от реализации).
Кроме того, компиляторы отличаются тем, как они обрабатывают неполные мульти-символы (такие как 'abc'
).
Некоторые компиляторы дополняются слева, некоторые справа, независимо от порядка байтов (некоторые компиляторы могут вообще не заполняться).
Кто-то, кто может принять проблемы переносимости полного мульти-символа, может в любом случае хотеть предупреждение для неполного (-Wmultichar -Wno-four-char-constants
).