我接触过C++程序中的一些怪异符号。我正在处理位移,并且遇到了LOWORD()和HIWORD()函数。我知道LOWORD是整数的低2个字节的值。我也知道HIWORD是该整数的高2个字节。但是,我接触了一个看起来像这样的代码段:
#define LOWORD(l) ((WORD)(((DWORD_PTR)(l)) & 0xffff))
#define HIWORD(l) ((WORD)((((DWORD_PTR)(l)) >> 16) & 0xffff))
int v1 = 0x12343460;
int v2 = 0x11111111;
HIWORD(v2) = HIWORD(v1);
LOWORD(v1) = LOWORD(v2);
从外观上看,程序员似乎建议将一个函数的值放入另一个函数。但是,如果没有一些严肃的程序员魔术,这似乎是不可能的。在解密此代码段方面的任何帮助将不胜感激。
最佳答案
要解决这个问题:
#define HIDWORD(dw, hw) LOWORD(dw) | (hw << 16)
#define LODWORD(dw, lw) (HIWORD(dw) << 16) | lw
-----------------------------------------------
v2 = HIDWORD(v2, HIWORD(v1));
v1 = LODWORD(v1, LOWORD(v2));
关于c++ - LOWORD和HIWORD操作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52435029/