从指针到 uint32 的类型转换
Typecasting from pointers to uint32
我正在查看链接器描述符文件并找到以下代码行,但我无法理解此处使用的类型转换概念。
extern std::uintptr_t __sROData_LMA[]; /* start of LOAD region for DATA */
uint32_t * p_src, * p_dest;
#ifdef XMC_BOOT
// Copy the rodata segment initializers from ROM to RAM.
// Note that all data segments are aligned by 4.
p_src = static_cast<uint32_t *>(static_cast<void*>(__sROData_LMA));
p_dest = static_cast<uint32_t *>(static_cast<void*>(__sROData));
while (p_dest < static_cast<uint32_t*>(static_cast<void*>(__eROData)))
{
*p_dest++ = *p_src++;
}
#endif
p_src = static_cast<uint32_t *>(static_cast<void*>(__sROData_LMA));
行在程序中是什么意思?这里是如何进行类型转换的?提前致谢。
问题是,您不能解引用空指针,而是解引用 uint32_t 指针。
代码本身用于 Copy the rodata segment initializers from ROM to RAM.
,这是 ELF 二进制文件所需的 afaik。
其实这是一个mempcy
.
我正在查看链接器描述符文件并找到以下代码行,但我无法理解此处使用的类型转换概念。
extern std::uintptr_t __sROData_LMA[]; /* start of LOAD region for DATA */
uint32_t * p_src, * p_dest;
#ifdef XMC_BOOT
// Copy the rodata segment initializers from ROM to RAM.
// Note that all data segments are aligned by 4.
p_src = static_cast<uint32_t *>(static_cast<void*>(__sROData_LMA));
p_dest = static_cast<uint32_t *>(static_cast<void*>(__sROData));
while (p_dest < static_cast<uint32_t*>(static_cast<void*>(__eROData)))
{
*p_dest++ = *p_src++;
}
#endif
p_src = static_cast<uint32_t *>(static_cast<void*>(__sROData_LMA));
行在程序中是什么意思?这里是如何进行类型转换的?提前致谢。
问题是,您不能解引用空指针,而是解引用 uint32_t 指针。
代码本身用于 Copy the rodata segment initializers from ROM to RAM.
,这是 ELF 二进制文件所需的 afaik。
其实这是一个mempcy
.