【发布时间】:2015-11-19 12:02:50
【问题描述】:
当我使用以下代码在内存中的特定地址写入数据时,我收到一条错误消息,告诉我
“函数写入的参数1中的类型错误”。
据我所知,S_LEN 是指向0x1814 的指针,因此它应该以正确的方式工作,但在这种情况下,我得到了之前的错误。
当我通过 write(&S_LEN,0); 替换命令 write(S_LEN,0); 时,它工作正常。尽管在第一种情况下,我将十六进制数字转换传递给指向整数的指针。
谁能解释一下这个问题?
#define RAM_START 0x1800
#define S_LEN (((int32_t *)(RAM_START))[0xFF])
int32_t write(int32_t *dest_ptr, int32_t src)
{
*dest_ptr = src;
return 0;
}
main()
{
write(S_LEN,0);
}
【问题讨论】:
-
为什么不使用
mmap()进行内存分配? -
除非您有充分的理由,否则请不要将问题标记为 C 和 C++。这很可能是一个 C 问题,C++ 的答案会有很大差异,因为他们建议用更好的东西替换宏,而这在 C 中是不可能的。