相关疑难解决方法(0)

为什么C和C++中有有关图?

我今天学到了C99和C++中的有向图.以下是有效的计划:

%:include <stdio.h>

%:ifndef BUFSIZE
 %:define BUFSIZE  512
%:endif

void copy(char d<::>, const char s<::>, int len)
<%
    while (len-- >= 0)
    <%
        d<:len:> = s<:len:>;
    %>
%>
Run Code Online (Sandbox Code Playgroud)

我的问题是:它们为什么存在?

c c++ c99 digraphs

71
推荐指数
4
解决办法
1万
查看次数

C预处理器是否首先删除注释或扩展宏?

考虑这个(可怕的,可怕的,没有好的,非常糟糕的)代码结构:

#define foo(x) // commented out debugging code

// Misformatted to not obscure the point
if (a)
foo(a);
bar(a);
Run Code Online (Sandbox Code Playgroud)

我已经看到两个编译器的预处理器在这段代码上生成不同的结果:

if (a)
bar(a);
Run Code Online (Sandbox Code Playgroud)

if (a)
;
bar(a);
Run Code Online (Sandbox Code Playgroud)

显然,对于可移植的代码库来说这是一件坏事.

我的问题:预处理器应该用这个做什么?首先是Elide评论,还是先扩展宏?

c comments c99 c-preprocessor

54
推荐指数
3
解决办法
2万
查看次数

逃生顺序为?在c ++中

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

c++ string escaping trigraphs

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

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

我收到错误<:无法在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
查看次数

trigraph ??/ignored,使用-trigraphs启用

我的编译器(gcc)给了我这个警告.请帮我理解它的含义:

警告:trigraph ??/ignored,使用-trigraphs启用

c gcc

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

为什么三字母在现代C++编译器中会产生错误?

使用Turbo C++编译的三字符程序的屏幕截图

即使在GCC编译器中,如果没有明确指定trigraph属性,也不会编译三字符.

#include<stdio.h>

int main()
 {
 int a=4;
 if((a==4) ??! (a==5))
   printf("\nHello world!");
 return 0;
 }
Run Code Online (Sandbox Code Playgroud)

保存为try.c的程序仅在我们指定时才在GCC编译器中编译gcc -Wall -trigraphs try.c,并且仍然显示警告.你可以招募一些能够处理和处理三字符而没有任何错误或警告的编译器吗?

c c++ gcc compiler-errors

8
推荐指数
2
解决办法
2929
查看次数

三字母是否仍然有效C++?

我们都知道的历史好奇心二合字母和三合,但随着近年来C++的所有更改我很好奇:他们是合法的C++ 14?C++ 17怎么样?

c++ digraphs trigraphs c++14 c++17

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

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

我创建了一个包含以下代码段的新项目:

char* strange = "(Strange??)";
cout << strange << endl;
Run Code Online (Sandbox Code Playgroud)

产生以下输出:

(奇怪]

因此翻译'??)' - >']'

调试它显示我的char*字符串文字实际上是该值,它不是流转换.这显然不是我见过的元字符序列.某种Unicode或宽字符序列也许?我不这么认为......我试过禁用所有相关的项目设置无济于事.

有人有解释吗?

  • 搜索:'问号,问号,闭括号'c c ++ string literal

c c++ trigraphs visual-c++

6
推荐指数
3
解决办法
2028
查看次数

在 c 中使用 '??='、'??&lt;' 和 '??&gt;'

我正在经历一些面试问题,我遇到了如下示例。我尝试了简单输入/输出以及一些逻辑的示例,它工作没有任何问题。

??=include <stdio.h>

int main(void) 
??<
    printf("Hello");
    // Other code lines here
    return 0;
??>
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是,这没有任何编译问题,并且输出符合要求。

这里的“??=”、“??<”和“??>”有何意义?

c trigraphs

5
推荐指数
1
解决办法
578
查看次数

增加引用变量不起作用

应该输出以下代码6,而是输出5.我无法弄清楚为什么.这是怎么回事?

#include <iostream>

template <typename T>
void foo(T& y)
{
   y++;
}

int main()
{
   int x = 5;

   // Why won't this line work???/
   foo(x);

   std::cout << x;
}
Run Code Online (Sandbox Code Playgroud)

现场演示

c++ c++11

3
推荐指数
2
解决办法
722
查看次数