In the world of programming, digraphs hold a peculiar place in the annals of C99 and C . With syntax such as %:include and <::>, digraphs may strike some as an archaic and enigmatic feature. So, let's delve into the rationale behind their existence.
Digraphs and Keyboard Constraints
The origins of digraphs trace back to a time when programmers often lacked keyboards that supported the full ISO 646 character set. This limitation hindered their ability to represent certain symbols, including the percent sign (%) and the square brackets ([]).
To overcome this challenge, the creators of C devised a clever solution: digraphs. These two-character sequences represented the missing symbols, allowing programmers to work around their hardware constraints without resorting to hex codes or other cumbersome methods.
A Case in Point
Consider the following example in C99:
<code class="c">%:include <stdio.h> %:ifndef BUFSIZE %:define BUFSIZE 512 %:endif void copy(char d<::>, const char s<::>, int len) <% while (len-- >= 0) <% d<:len:> = s<:len:>; %> %></code>
In this snippet, the %: digraph stands in place of the percent sign, enabling the #include preprocessor directive. Similarly, <::> represents the square brackets, enclosing the s and d parameters within the copy function's definition.
Without digraphs, programmers using keyboards lacking ISO 646 support would have had to write:
<code class="c">#include <stdio.h> #ifndef BUFSIZE #define BUFSIZE 512 #endif void copy(char d[__$$__], const char s[__$$__], int len) __$$__ while (len-- >= 0) __$$__ d[__$$__len__$$__] = s[__$$__len__$$__]; __$$__ __$$__</code>
As you can see, this alternative notation is significantly more cumbersome and less readable. Digraphs provide a concise and convenient solution to this problem.
Conclusion
While digraphs may seem like a relic of the past, their historical significance in the development of C99 and C is undeniable. They emerged as a pragmatic solution to hardware limitations, enabling programmers to write code without being constrained by the availability of specific symbols on their keyboards.
The above is the detailed content of Why are digraphs still present in C and C ?. For more information, please follow other related articles on the PHP Chinese website!