是有向图和三字母当今使用? [英] Are digraphs and trigraphs in use today?

查看:190
本文介绍了是有向图和三字母当今使用?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

由于没有理由使用有向图曾经和三字母C和C ++ 的,没有人把它们放在code目前正在写的?是否有遗留code,不论数量多少尚在包含它们的维护?

Given that there were once reasons to use digraphs and trigraphs in C and C++, does anyone put them in code being written today? Is there any substantial amount of legacy code still under maintenance that contains them?

(注:这里的有向图做的不可以的意思是有向图双方的有向图三字母有多重含义,但这里的用途就像<$序列C $ C> ?? = 或&LT; 站在像#和 [

(Note: Here, "digraph" does not mean "directed graph." Both digraph and trigraph have multiple meanings, but the intended use here are sequences like ??= or <: to stand in for characters like # and [)

推荐答案

有一个的 的提案尚待C ++ 1Z (下一个标准之后,C ++ 1Y将被标准化为-hopefully- C ++ 14),其目的是去除的三字母标准。他们做了一个案例研究上的秘密,否则大codeBase的:

There is a proposal pending for C++1z (the next standard after C++1y will be standardized into -hopefully- C++14) that aims to remove trigraphs from the Standard. They did a case study on an otherwise undisclosed large codebase:

案例研究

三字符样构建于一体的大型codeBase包括用途是
  检查。我们发现:

The uses of trigraph-like constructs in one large codebase were examined. We discovered:

的实例923逃脱?在一个字符串,以避免三字母
  更换:字符串模式()const的{返回富 - ???? \\ - 的 - ?????? }

923 instances of an escaped ? in a string literal to avoid trigraph replacement: string pattern() const { return "foo-????\?-of-?????"; }

4三字母的情况下被有意使用测试code:两个
  测试套件编译器,在一个测试套件为其他两个领域
  Boost的preprocessor库。

4 instances of trigraphs being used deliberately in test code: two in the test suite for a compiler, the other two in a test suite for boost's preprocessor library.

0三字母作为实例
  在生产中code刻意用。三字母继续构成
  基于C的用户++负担。

0 instances of trigraphs being deliberately used in production code. Trigraphs continue to pose a burden on users of C++.

的议案笔记(粗体强调从原来的建议):

The proposal notes (bold emphasis from the original proposal):

如果三字母是从语言完全删除,一个
  实现,希望支持他们能继续这样做:其
  从物理源文件中的字符来实现自定义映射
  基本源字符集可以包含三字符转换(与
  甚至可以忌生吃字符串内这样做)。 我们不需要
  在标准的三字母的向后兼容性

If trigraphs are removed from the language entirely, an implementation that wishes to support them can continue to do so: its implementation-defined mapping from physical source file characters to the basic source character set can include trigraph translation (and can even avoid doing so within raw string literals). We do not need trigraphs in the standard for backwards compatibility.

这篇关于是有向图和三字母当今使用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆