Последовательность триграфа - это любая последовательность символов, начинающаяся с "??"
;следующий символ определяет значение последовательности.Последовательности триграфа (или были) используются для представления символов, которые не были представлены на некоторых клавиатурах.Так, например, "??="
означает #
.
Последовательности триграфа больше не используются;Я не проверял, но они могут быть устаревшими в C ++ или удалены полностью.(Спасибо @johnathan за указание, что они были удалены в C ++ 17)
В любом случае, если вы не можете отключить это предупреждение, вы можете изменить последовательность символов так, чтобы она выглядела одинаковокомпилятору, но это не триграф.Для этого измените один из символов ?
на \?
.Так что "??="
станет "?\?="
;это не триграф, потому что он не состоит из символов "??"
, за которыми следует другой символ, но как только компилятор обработает его, это два вопросительных знака, за которыми следует знак '='
.
Другой способпереставить цитируемые строки означает разделить их.Так что "??="
станет "??" "="
или "?" "?="
;компилятор объединяет эти смежные строковые литералы, но, опять же, они не являются последовательностями триграфов, потому что конкатенация происходит после проверки триграфов.