我是 C 新手,正在尝试一些宏语句。我有这样的一行:
#define write_data(src, TYPE, VALUE ) (write_implement(src, sizeof(TYPE), &(VALUE)))
在以后的功能中,我想用它memcpy
来复制VALUE
另一个内存区域。像这样:
void write_implement (void* src, int size_of_type, void* value)
{
//whatever, just making the destination address from the source address
void* dest = src + 4096;
memcpy(dest, value, size_of_type);
}
传入的 VALUE 可以是任何类型的数据。这就是为什么我使用 void* 来指向它并使用 memcpy 来复制字节大小的数量。
但它当然不起作用:)
这就是我调用函数的方式:
write_data(addr, int, i*3); // i is a whatever integer variable
GCC 给了我这个:
错误:需要左值作为一元“&” 操作数
有谁知道如何找到传递给宏的变量的地址以允许我使用该地址进行复制?
可以更改宏的后半部分(“write_implement”和参数,但不能更改“write_data”参数)。并且实现部分也可以自由更改。