Страницы

Поиск по вопросам

пятница, 3 января 2020 г.

Замена фигурной скобки в си

#c #gcc


Недавно увидел в одном коде использование символов "<%" в качестве фигурной скобки.
Сам убедился, что эти символы работают, но нигде не нашел документации на этот счет.
Кто знает, это фича или баг?
    


Ответы

Ответ 1



Кто знает, это фича или баг? Фича. Это называется alternative tokens (или digraphs - диграфы). Их можно использовать вместо { } [ ] # ##: Диграф: <% %> <: :> %: %:%: Значение: { } [ ] # ## Внутри строковых и символьных литералов, а также комментариев, диграфы не обрабатываются. В отличие от триграфов, которые обрабатываются везде: Триграф: ??< ??> ??( ??) ??= ??/ ??' ??! ??- Значение: { } [ ] # \ ^ | ~ Смысл всего это безобразия в том, чтобы на С можно было писать даже на экзотических кодировках, в которых недостает некоторых символов. Не видел, чтобы это хоть где-то применялось на практике.

Ответ 2



Это диграф https://ru.wikipedia.org/wiki/Диграф_(языки_Си) . Можете также почитать про триграфы. Я настоятельно рекомендую не использовать это

Комментариев нет:

Отправить комментарий