Interested Article - Диграф (языки Си)

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

История

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

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

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

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

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

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

Язык 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

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

"%:"

См. также

Примечания

  1. от 20 января 2012 на Wayback Machine (англ.)
  2. . Дата обращения: 18 ноября 2014. 8 мая 2019 года.
Источник —

Same as Диграф (языки Си)