鉴于曾经有使用 digraphs and trigraphs 的理由在 C 和 C++ 中,有人将它们放入今天编写的代码中吗?是否还有大量包含它们的遗留代码仍在维护中?
(注意:这里,“有向图”不表示“有向图”。digraph 和 trigraph 都有多种含义,但这里的预期用途是像 ??=
或<:
代表 #
和 [
等字符)
最佳答案
我不确定,但您最有可能发现在 IBM 大型机环境中使用的二合字母和三合字母。 EBCDIC字符集不包含 C 所需的某些字符。
二合字母和三合字母的另一个理由,即用重音字母替换一些标点符号的 7 位 ASCII-ish 字符集,今天可能不太相关。
在这样的环境之外,我怀疑三元组更常被误用而不是故意使用,例如:
puts("What happened??!");
作为引用,1989 年 ANSI C 标准(本质上成为 1990 年 ISO C 标准)中引入了三元组。它们是:
??= # ??) ] ??! |
??( [ ??' ^ ??> }
??/ \ ??< { ??- ~
替换发生在源代码中的任何地方,包括注释和字符串文字。
Digraphs 是某些标记的替代拼写,不影响注释或文字:
<: [ :> ]
<% { %> }
%: # %:%: ##
有向图是由 1990 年 ISO C 标准的 1995 年修正案引入的。
关于c++ - 今天使用二合字母和三合字母吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7451406/