微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ARM64系统中不同大小的指针投射警告

如何解决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 举报,一经查实,本站将立刻删除。