【发布时间】:2011-04-16 11:42:33
【问题描述】:
来自jmorecfg.h:
#define PACK_TWO_PIXELS(l,r) ((r<<16) | l)
#define PACK_NEED_ALIGNMENT(ptr) (((int)(ptr))&3)
#define WRITE_TWO_PIXELS(addr, pixels) do { \
((INT16*)(addr))[0] = (pixels); \
((INT16*)(addr))[1] = (pixels)>>16; \
} while(0)
#define WRITE_TWO_ALIGNED_PIXELS(addr, pixels) ((*(INT32*)(addr)) = pixels
谁能解释一下 WRITE_TWO_PIXELS 和 WRITE_TWO_ALIGNED_PIXELS 之间的区别?如果像素是分配的堆栈 uint32_t 和 addr & 3 == 0,它们不应该是等价的吗?
谢谢。
【问题讨论】:
-
我已经编辑了我的示例。请再检查一次。我很抱歉这个错误。
标签: c++ c pointers alignment libjpeg