编译器在C++中如何解析数组声明
How is an array declaration resolved by the compiler in C++?
假设我们有一行是数组定义:
char v[100];
评估这个定义的后续步骤是什么?我认为首先评估char v
定义,并进一步应用于未初始化的变量v
运算符[]
。但这是无稽之谈。我想了解,为什么这个定义返回char*
。如果可能的话,请参考规范
char v[100]
是一个变量声明。
这里没有语句或表达式,因此不需要评估任何内容。
将对CCD_ 6进行评估。
将对CCD_ 7进行评估。
将对CCD_ 8进行评估。
但不是char v[100]
。
例如,以下是Microsoft Visual C++编译器评估char v[100] = "abc"
的方法:
char v[100] = "abc";
001B1DA8 mov eax,dword ptr [string "abc" (1B695Ch)]
001B1DAD mov dword ptr [ebp-6Ch],eax
001B1DB0 push 60h
001B1DB2 push 0
001B1DB4 lea eax,[ebp-68h]
001B1DB7 push eax
001B1DB8 call @ILT+135(_memset) (1B108Ch)
001B1DBD add esp,0Ch
您可以自己查看char v[100]
的反汇编,并看到"背后没有代码"。
相关文章:
- 使用 jsoncpp 解析 json 数组字符串
- 使用 Qt 解析 JSON 数组
- BitBlt转换为字节数组并从c ++解析为c#
- 如何使用 boost 属性树来解析 boost 中 json 字符串中的数组中的元素?
- Python API用于解析包含数组格式的protobuf数据的二进制文件
- 在 Qt 中解析嵌套的 JSON 时出现意外结果(数组不存在)
- 如何使用QJSONARRAY在QT5(C )中解析JSON文件(数组)
- 解析数组C++
- 从QT的Web服务中解析未命名的JSON数组
- C 排序无法解析标识符开始和结束吗?(将数组保持在一起)
- C 从文件中读取文本,然后将字符串解析为int数组
- C 将解析器的结果转到数组
- 在字节数组中解析Unicode
- 将字符串解析为字符的指针数组:char[0] 包含完整的字符串,而 [1] 以后不包含任何内容
- 如何使用C 中的JSONCPP解析器解析对象/数组
- 数组下标的无效类型"<未解析的重载函数类型>[int]" - C++
- 使用Boost Spirit使用数组解析结构
- 如何在C++中解析数组中的重复项
- 在rapidjson中解析数组中的对象
- 编译器在C++中如何解析数组声明