【发布时间】:2013-06-16 15:52:53
【问题描述】:
这里有一个类似的问题Portable and safe way to add byte offset to any pointer
但所有答案都以 ptr = (SomeType*)... 开头,这意味着我必须 知道指针的类型,而我想使用这个宏:
#define ptradd(ptr, delta) (size_t) ptr = (size_t) ptr + (size_t) delta
ptradd(prect, offset);
它在 VC 下工作,但在 GCC 下失败并出现错误 需要左值作为赋值的左操作数。
如何让它在 GCC 下工作?
【问题讨论】:
-
#define ptradd(ptr, delta) ptr = ((void*)((char*)ptr + delta))?注意,如果不满足对齐要求,则为UB。 -
写这样一个宏是 IMNSHO 的一个错误...