c++ - 今天使用二合字母和三合字母吗?

标签 c++ c digraphs trigraphs

鉴于曾经有使用 digraphs and trigraphs 的理由在 C 和 C++ 中,有人将它们放入今天编写的代码中吗?是否还有大量包含它们的遗留代码仍在维护中?

(注意:这里,“有向图”表示“有向图”。digraphtrigraph 都有多种含义,但这里的预期用途是像 ??=<: 代表 #[ 等字符)

最佳答案

我不确定,但您最有可能发现在 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/

相关文章:

c - 用正确的整数类型替换数组访问变量

algorithm - 生成所有唯一的有向图,每个节点有 2 个输入

c - 我如何在 Bloodshed/Dev C++ 编译器中使用二合字母和三合字母

c++ - 三字母仍然有效 C++ 吗?

c++ - 在运行时有条件地实例化模板

c++ - 不支持成员聚合初始值设定项列表?

c - 使用哪个IPC我可以将文件描述符从一个进程传递到同一台机器上的另一个进程?

c# - 为什么在 C++ 中,dynamic_cast 被认为是不好的做法?

c++ - 本地时间函数的奇怪行为

c - 如何用 clone() 替换 pthread_join() 和 pthread_create()