WikiSort.ru - Программирование

ПОИСК ПО САЙТУ | о проекте

Диграф (в семействе языков Си) (англ. digraph) — последовательность из двух или более символов, интерпретируемая компилятором как один или более символов. В отличие от триграфов, подстановка диграфов препроцессором выполняется после лексического анализа и только в том случае, если диграф является отдельной лексемой.

История

Диграфы введены в язык C90 (ISO/IEC 9899:1990) дополнением «Amendment one». Дополнение «Amendment one» одобрено в 1994 году, принято в 1995 году и включено в стандарт C99 (ISO/IEC 9899:1999) в 1999 году.

Таблица диграфов C

Компилятор C поддерживает следующие пять диграфов, описанных в стандарте C99[1].

ДиграфЭквивалентный символ
<:[
 :>]
<%{
%>}
%:#

Таблица диграфов C++

Стандарт языка C++ называет диграфами не только последовательности из двух символов и признаёт[2], что такой термин некорректен.

Язык C++ поддерживает все диграфы и триграфы языка C, а также диграфы из следующей таблицы.

ДиграфЭквивалентная последовательность
%:%:##
and&&
bitor|
or||
xor^
compl~
bitand&
and_eq&=
or_eq|=
xor_eq^=
not!
not_eq!=

Перечисленные диграфы, кроме «%:%:», доступны в языке C в виде констант #define. Константы определены в заголовочном файле «<iso646.h>», включённом в стандарт ISO C дополнением «Normative addendum 1» от 1995 года. Для сохранения совместимости с C стандарт C++ определяет пустой заголовочный файл «<ciso646>».

Примеры

Код

%: define quote( x ) %: x
quote( x )

после подстановки диграфов станет

# define quote( x ) # x
quote( x )

а после замены макроса станет

"x"

Код

%: define S "%:"
S

после подстановки диграфов станет

# define S "%:"
S

а после замены макроса станет

"%:"

См. также

Примечания

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2024
WikiSort.ru - проект по пересортировке и дополнению контента Википедии