相关疑难解决方法(0)

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 中 char foo(|10|) 的含义是什么?

我是一位非常有经验的 C 程序员,但最近我在大型机上遇到了一些具有局部变量的代码。这是在一个简单的 C 函数中声明此变量,然后strcpystrcat两个字符串放入其中,然后尝试使用fopen.

char foo(|10|);
Run Code Online (Sandbox Code Playgroud)

这段代码很旧了。甚至可能是 K&R C 旧的。我想知道这是否是一些晦涩的编译器扩展或对没有 [] 或类似内容的键盘的适应。

有人知道这个声明是否“特殊”吗?

这是一个标准的 Z/OS 大型机。我不确定使用什么编译器。

c mainframe ebcdic zos

99
推荐指数
1
解决办法
4275
查看次数

<:无法开始模板参数列表

我收到错误<:无法在g ++编译器上开始模板参数列表.码

template<typename T> class SomeClass;
class Class;

SomeClass<::Class>* cls;
Run Code Online (Sandbox Code Playgroud)

c++ parsing templates digraphs c-preprocessor

18
推荐指数
3
解决办法
2627
查看次数

C中的<:语法有什么意义?

可能重复:
<:无法开始模板参数列表

你知道吗

int a<:10:>;
Run Code Online (Sandbox Code Playgroud)

相当于

int a[10];
Run Code Online (Sandbox Code Playgroud)

我正在编写一些代码,其中我有一个全局命名空间和一个受限制的命名空间,现在说NS1.我在我的全局命名空间中有一个名为Module的类,我在NS1中导入了一些其他库,它们也有一个名为Module的类.我试图创建我的模块的std :: list,即在NS1中的一个函数内部的:: Module,这样做,我得到了这个编译错误

std::list<::Module*> &myModule;

genllvm.cpp:60:11: error: ‘<::’ cannot begin a template-argument list
./genllvm.cpp:60:11: note: ‘<:’ is an alternate spelling for ‘[’. Insert whitespace between ‘<’ and ‘::’
./genllvm.cpp:60:11: note: (if you use ‘-fpermissive’ G++ 
Run Code Online (Sandbox Code Playgroud)

这个"<:"语法有什么意义?

c c++ gcc

4
推荐指数
2
解决办法
773
查看次数

为什么在C++中有替代令牌?

可能重复:
为什么C和C++中有有向图?
什么是C ??!??!运营商呢?!

在C++中,有[]和{}等替代令牌.

例如,以下代码编译:

%:include <stdio.h>
int main() <%
    printf("Hello World!");
}
Run Code Online (Sandbox Code Playgroud)

我想了一会儿却想不出任何适用性,这有什么合理的理由吗?

c++ ansi

2
推荐指数
1
解决办法
592
查看次数

标签 统计

c++ ×4

c ×2

ansi ×1

c++03 ×1

c-preprocessor ×1

digraphs ×1

ebcdic ×1

gcc ×1

mainframe ×1

parsing ×1

templates ×1

trigraphs ×1

zos ×1