问题描述
我运行的是基于 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 标准的...感谢您的帮助!