c++ - C/C++ 字符串文字中的未知元字符?

标签 c++ c visual-c++ trigraphs

我使用以下代码段创建了一个新项目:

char* strange = "(Strange??)";
cout << strange << endl;

导致以下输出:

(Strange]

这样翻译 '??)' -> ']'

调试它表明我的 char* 字符串文字实际上是那个值,而不是流翻译。这显然不是我见过的元字符序列。 也许是某种 Unicode 或宽字符序列?但是我不这么认为......我已经尝试禁用所有相关的项目设置但无济于事。

谁有解释?

  • search : '问号,问号,右括号' c c++ 字符串字面量

最佳答案

您所看到的称为 trigraph .

在大人的书面语言中,任何情况下一个问号就足够了。一次不要使用多个,您将永远不会再看到它。

GCC 默认忽略三字母,因为几乎没有人有意使用它们。使用 -trigraph 选项启用它们,或告诉编译器使用 -Wtrigraphs 选项警告您。

Visual C++ 2010 也默认禁用它们并提供 /Zc:trigraphs 来启用它们。我找不到任何关于在以前的版本中启用或禁用它们的方法。

关于c++ - C/C++ 字符串文字中的未知元字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1669448/

相关文章:

c++ - 如何为一组对重载比较运算符?

c++ - 如何专门化类模板成员函数?

visual-studio - '/fp :fast' and '/Za' not compatible Visual C++

c++ - 将函数指针存储到任何成员函数

c - 打开的子套接字如何关闭?

c - 如何在 C 中使用 try-catch(或 C 中的等效项)

检查 pthread 可取消状态

c++ - 找出通用 catch C++ 中的异常类型

c++ - 删除的构造函数 - MSVC 报告错误,Clang 没有

c++ - 赋值运算在 C 中隐式计算出什么 bool 值?