作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我只是 llvm 程序集的初学者,我喜欢问有关
我不确定的一切。
我只是在看 hello world 程序
和 @str = 内部常量 [13 x i8] c"hello world\0A\00"
我不明白后缀是什么意思
\0A\00 我尝试阅读它,结果输出中没有换行符
但是,如果我只有\0A 换行符又回来了......我觉得\00 没用......
这是真的吗?
最佳答案
在 LLVM IR 语法中,反斜杠后跟两个十六进制字符表示一个字符 ASCII value与由两个字符定义的相同。
在这种情况下,字符是索引 10 (0xA) 处的字符 - 这是一个换行符 - 和索引 0 处的字符,它被称为“空”,用于在许多不同的系统中终止字符串。在 C 语言中,这些将被写为 \n
和 \0
(或只是 0)代替,用 \0
被隐式添加到 C 中文字字符串的末尾(但不是在 LLVM IR 中)。
换句话说,你看到的字符串等价于 "hello world\n"
在 C.
注意:虽然可以使用非空终止的字符串,但这是非常不健康的,很多内置的字符串操作都会有 undefined behavior在那些上。不要省略空终止。
关于llvm - llvm 字符串中的\0A\00 到底是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14710427/
我是一名优秀的程序员,十分优秀!