我有下面的C++代码片段,它运行得非常好:
Address = **(uint32_t **)(0x12345678);
我在上面提到的Use of C type cast.
行有一个LDRA警告。有人能帮我把上面的指令转换成C++风格吗?
谢谢,Kalyan
这是reinterpret_cast
只有以下转换可以用
reinterpret_cast
完成,除非这种转换会消除常量或波动性。
- 任何积分或枚举类型的值都可以转换为指针类型。被转换为足够大小的整数并返回到相同指针类型的指针被保证具有其原始值,否则,无法安全地解除对结果指针的引用(不能保证相反方向的往返转换;同一指针可能有多个整数表示(。空指针常量null或整数零不能保证产生目标类型的空指针值;为此,应使用static_cast或隐式转换
所以这将是
Address = **reinterpret_cast<uint32_t **>(0x12345678);