如何解决ARM64系统中不同大小的指针投射警告
我运行的是基于 Xilinx 的裸机 ARM A57 系统。
我想把两个链接器定义的符号的地址带到我的 c 程序中...
这是链接器脚本:
.mutex_ram: {
_mutex_start = .;
. += _MUTEX_SIZE;
. = ALIGN(8);
_mutex_end = .;
} > mem_common
这是我想用 C 做的事情的简要总结。
extern int _mutex_start;
extern int _mutex_end;
void some_fcn(void)
{
int size = (int)(&_mutex_end)-(int)(&_mutex_start);
memset(&_mutex_start,size);
}
为什么编译器会警告我这是一个不同大小的整数转换?我就是不明白...
warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
有人可以帮我吗?
解决方法
感谢 Jabberwocky,我使用了
ptrdiff_t size = (ptrdiff_t)((intptr_t)&_mutex_end - (intptr_t)&_mutex_start);
我不知道使用 ptr_diff_t 实际上是符合 MISRA 标准的...感谢您的帮助!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。