Есть ли переключатель для отключения триграфов с помощью clang?

У меня есть некоторый (устаревший) код, который я создаю с помощью clang в первый раз. Код выглядит примерно так:

sprintf(buf, "%s <%s ????>", p1, p2);

Clang выдает следующее предупреждение (ошибка с -Werror ):

test.c:6:33: error: trigraph converted to '}' character [-Werror,-Wtrigraphs]
    sprintf(buf, "%s <%s ????>", p1, p2);
                           ^

Очевидно, что ??> не предназначен для использования в качестве триграфа, поэтому я хочу полностью отключить триграфы (источник их нигде не использует намеренно. ).

Я пробовал -no-trigraphs , но на самом деле это не вариант:

clang: warning: argument unused during compilation: '-no-trigraphs'

Я могу отключить предупреждение о триграфах с помощью -Wno-trigraphs , но я этого не делаю. Я не хочу, чтобы преобразование триграфа вообще происходило.

ПРИМЕЧАНИЕ: Триграфы были включены как непреднамеренный побочный эффект использования -std = c89 .

10
задан Greg Hewgill 21 February 2012 в 13:18
поделиться