You can represent unavailable characters in a source program by using a combination of two keystrokes that are called a digraph character. The preprocessor reads digraphs as tokens during the preprocessor phase.
The digraph characters are:
%: or %% | # | number sign |
<: | [ | left bracket |
:> | ] | right bracket |
<% | { | left brace |
%> | } | right brace |
%:%: or %%%% | ## | preprocessor macro concatenation operator |
You can create digraphs by using macro concatenation. ILE C/C++ does not replace digraphs in string literals or in character literals. For example:
char *s = "<%%>"; // stays "<%%>"
switch (c) {
case '<%' : { /* ... */ } // stays '<%'
case '%>' : { /* ... */ } // stays '%>'
}