标签: trigraphs

什么是C ??!??!操作员呢?

我看到一行C看起来像这样:

!ErrorHasOccured() ??!??! HandleError();
Run Code Online (Sandbox Code Playgroud)

它编译正确,似乎运行正常.看起来它正在检查是否发生了错误,如果有错误,它会处理它.但我不确定它在做什么或它是如何做的.看起来程序员正试图表达他们对错误的看法.

我从来没有??!??!在任何编程语言中看过以前,我无法在任何地方找到它的文档.(Google对搜索字词没有帮助??!??!).它做了什么以及代码示例如何工作?

c operators trigraphs

1911
推荐指数
4
解决办法
25万
查看次数

C++中Trigraph序列的目的是什么?

根据C++'03标准2.3/1:

在进行任何其他处理之前,每个出现的以下三个字符序列之一("三字符序列")被表1中指示的单个字符替换.

----------------------------------------------------------------------------
| trigraph | replacement | trigraph | replacement | trigraph | replacement |
----------------------------------------------------------------------------
| ??=      | #           | ??(      | [           | ??<      | {           |
| ??/      | \           | ??)      | ]           | ??>      | }           |
| ??’      | ˆ           | ??!      | |           | ??-      | ˜           |
----------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

在现实生活中,这意味着代码printf( "What??!\n" );将导致打印,What|因为??!是一个被|字符替换的三字符序列.

我的问题是使用三字母的目的是什么?使用三字母有什么实际优势吗?

UPD:在答案中提到一些欧洲键盘没有所有标点字符,所以非美国程序员必须在日常生活中使用三字母组合?

UPD2:Visual Studio 2010默认情况下关闭了三字母支持.

c++ trigraphs c++03

119
推荐指数
6
解决办法
4万
查看次数

C++代码中`??? - `的含义

我从一些遗留代码中看到了以下代码:

 size_t a = 1 ???- 2 :0;
Run Code Online (Sandbox Code Playgroud)

符号???-在C++ 中的含义是什么?我该怎么理解呢?

谢谢!

c++ trigraphs

61
推荐指数
3
解决办法
4024
查看次数

今天是否使用了有向图和三字母?

鉴于曾经有过在C和C++中使用有向图和三字符的理由,是否有人将它们放入今天编写的代码中?是否还有大量遗留代码仍在维护中并包含它们?

(注:这里的"有向图"并不会意味着"有向图".这两个有向图三字母有多种含义,但这里的用途是一样的序列??=<:站在像字符#[)

c c++ digraphs trigraphs

39
推荐指数
4
解决办法
6963
查看次数

在C++中引入'和'和'或'替代令牌是什么时候?

我刚读过Reddit的这篇精彩文章.

他们提到and,并or成为"替代令牌",以&&||

到目前为止我真的没有意识到这些.当然,每个人都知道的二图和三图表,但andor?从何时起?这是标准的最新成员吗?

我刚刚使用Visual C++ 2008进行了检查,它似乎并没有将这些视为语法错误.这是怎么回事?

c++ syntax keyword digraphs trigraphs

37
推荐指数
4
解决办法
6484
查看次数

C++ 1z为什么不删除有向图和三字母?

C++ 1z将删除trigraphs.IBM严重反对这一点(此处此处),因此似乎存在删除/不删除双方的争论.

但既然决定删除三角形,为什么要留下有向图?我认为没有任何理由可以保留有关三角形的原因(这显然不足以保留三角形).

c++ standards digraphs trigraphs c++17

24
推荐指数
1
解决办法
2379
查看次数

逃生顺序为?在c ++中

我正在查看c ++中字符串中字符的转义序列,我注意到有一个问号的转义序列.谁能告诉我为什么会这样?这看起来有点奇怪,我无法弄清楚是什么?做一个字符串.谢谢.

c++ string escaping trigraphs

23
推荐指数
1
解决办法
3726
查看次数

有没有用clang禁用三字符的开关?

我有一些(遗留)代码,我第一次使用clang构建.代码类似于:

sprintf(buf, "%s <%s ????>", p1, p2);
Run Code Online (Sandbox Code Playgroud)

Clang发出以下警告(错误-Werror):

test.c:6:33: error: trigraph converted to '}' character [-Werror,-Wtrigraphs]
    sprintf(buf, "%s <%s ????>", p1, p2);
                           ^
Run Code Online (Sandbox Code Playgroud)

显然,这??>不是一个三元组,所以我想完全禁用三元组(源不会故意在任何地方使用它们).

我试过了,-no-trigraphs但这不是一个真正的选择:

clang: warning: argument unused during compilation: '-no-trigraphs'
Run Code Online (Sandbox Code Playgroud)

我可以关闭三元组警告,-Wno-trigraphs但我不希望实际发生三元组转换.

注意:Trigraphs被启用为使用的意外副作用-std=c89.

c++ clang trigraphs

10
推荐指数
1
解决办法
4114
查看次数

建议像google与postgresql三元组和全文搜索

我想像google建议一样进行文本搜索.

因为神奇的Postgis,我正在使用PostgreSQL.

我正在考虑使用FTS,但我发现它无法搜索部分单词,所以我发现了这个问题,并看到了三元组的工作方式.

主要问题是我正在研究的搜索引擎是用于西班牙语.FTS在词干和词典(同义词,拼写错误),UTF等方面表现出色.Trigrams适用于部分单词,但它们只适用于ASCII,并且(显然)它们不使用字典之类的东西.

我在想是否有任何方式可以使用两者中最好的东西.

是否可以使全文搜索和Trigrams在PGSQL中一起工作?

postgresql full-text-search trigraphs

8
推荐指数
1
解决办法
2701
查看次数

为什么不提升正则表达式.{2}'匹配'??'

如果数据流中有趣的数据,我正在尝试匹配一些块.

应该有一个前导的<四个字母数字字符,两个校验和字符(或者??如果没有指定shecksum)和一个尾随字符>.

如果最后两个字符是字母数字,则以下代码按预期工作.如果他们??失败了.

// Set up a pre-populated data buffer as an example
std::string haystack = "Fli<data??>bble";

// Set up the regex
static const boost::regex e("<\\w{4}.{2}>");
std::string::const_iterator start, end;
start = haystack.begin();
end = haystack.end();
boost::match_flag_type flags = boost::match_default;

// Try and find something of interest in the buffer
boost::match_results<std::string::const_iterator> what;
bool succeeded = regex_search(start, end, what, e, flags); // <-- returns false
Run Code Online (Sandbox Code Playgroud)

我没有在文档中发现任何暗示应该是这种情况的东西(除了NULL和换行符应该匹配AIUI).

那么我错过了什么?

c++ boost trigraphs boost-regex

8
推荐指数
1
解决办法
240
查看次数