小编Ami*_* A.的帖子

在 C++ 中用“$”编写原始字符串的正确格式是什么?

我正在从关于常量cplusplus.com 教程中学习 C++ 中的原始字符串。根据该站点上的定义,原始字符串应R"sequence()sequencewhere开始和结束,wheresequence可以是任何字符序列。

该网站的示例之一如下:

R"&%$(string with \backslash)&%$"

但是,当我尝试编译包含上述原始字符串的代码时,出现编译错误。

test.cpp:5:28: error: invalid character '$' in raw string delimiter
    5 |     std::string str = R"&%$(string with \backslash)&%$";
      |                       ^
test.cpp:5:23: error: stray 'R' in program

Run Code Online (Sandbox Code Playgroud)

我在 Windows 和 Linux 上使用 g++ 和 clang++ 进行了尝试。他们都没有工作。

c++ string

28
推荐指数
1
解决办法
1252
查看次数

在 C 中使用 enum 和 int 变量的区别

之间有什么区别

enum week{Mon, Tue, Wed, Thur, Fri, Sat, Sun};
enum week day = Wed; 
Run Code Online (Sandbox Code Playgroud)

enum week{Mon, Tue, Wed, Thur, Fri, Sat, Sun};
int day = Wed;
Run Code Online (Sandbox Code Playgroud)

在 C?

我找不到使用类型变量而enum不是使用常规int.

c int enums integer constants

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

为什么我可以使用 std 命名空间中的名称,即使我“正在使用命名空间 std;”?

算法头文件中不是已经有max函数了吗?和 by using namespace std;,我将函数导入到全局命名空间(它接受参数,在这种情况下两者都是整数,所以它不应该是一个重载)。

那么为什么没有任何命名冲突呢?

#include <iostream>
#include <algorithm>

using namespace std;

int max(int a, int b)
{
    return (a > b) ? a : b;
}

int main()
{
    cout << max(5, 10) << endl;
}
Run Code Online (Sandbox Code Playgroud)

c++ namespaces std

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

如果我在 x86 AT&amp;T 语法中省略了比例因子和索引寻址模式,会发生什么?

我是组装新手,我正在从头开始编程学习它。在第 41 页和第 42 页,该书讨论了索引寻址模式。

内存地址引用的一般形式是: ADDRESS_OR_OFFSET(%BASE_OR_OFFSET,%INDEX,MULTIPLIER)
所有字段都是可选的。要计算地址,只需执行以下计算:
FINAL ADDRESS = ADDRESS_OR_OFFSET + %BASE_OR_OFFSET + MULTIPLIER * %INDEX
ADDRESS_OR_OFFSET 和 MULTIPLIER 必须都是常量,而另外两个必须是寄存器。如果任何部分被遗漏,它只是在等式中用零代替。

所以我决定稍微玩一下这个。我写了下面的一段代码:

.code32
.section .data
str:
    .ascii "Hello world\0"

.section .text
.global _start
_start:
    movl $2, %ecx       # The index register.
    mov str(, %ecx, ), %bl
    movl $1, %eax
    int $0x80

Run Code Online (Sandbox Code Playgroud)

我希望得到 72(H 的 ASCII 代码)作为程序的退出结果,因为没有任何乘数(根据这本书,应该用零代替)。但令人惊讶的是,我得到了 108(l 的 ASCII 代码)。我认为这可能是.ascii一回事,并试图查看是否可以使用不同的数据类型获得不同的结果。我得到了相同的结果.byte

我尝试使用 AT&T 语法在 x86 程序集中查找索引寻址模式,但找不到任何有用的信息(可能是因为我不知道要搜索什么)。

有什么我遗漏的或者是书中的错误吗?鉴于我是该领域的新手,如果您详细说明,我真的很感激。

x86 assembly gnu-assembler att addressing-mode

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

标签 统计

c++ ×2

addressing-mode ×1

assembly ×1

att ×1

c ×1

constants ×1

enums ×1

gnu-assembler ×1

int ×1

integer ×1

namespaces ×1

std ×1

string ×1

x86 ×1