我偶然发现了将DWORD
值插入到std::vector<WORD>
中的以下代码段:
std::vector<WORD> memdlg;
DWORD exStyle = 0;
memdlg.push_back(LOWORD(exStyle));
memdlg.push_back(HIWORD(exStyle));
DWORD style = DS_CENTER | WS_OVERLAPPEDWINDOW | WS_POPUP | WS_VISIBLE | DS_SETFONT;
memdlg.push_back(LOWORD(style));
memdlg.push_back(HIWORD(style));
我了解代码的作用,但是我认为这种方法似乎不是可移植的方式,因为先插入低字,然后再插入高字,这似乎意味着字节序少吗?我对这个假设是否正确?
例如对于大端机,它应该是相反的:
memdlg.push_back(HIWORD(style)); // high word first
memdlg.push_back(LOWORD(style)); // low word second
这是正确的吗?因为如果以后我们(或按索引访问向量内存的其他代码)想从向量中提取DWORD
,该如何判断给定平台的排序是否正确?
顺便说一句。向量必须为WORD
向量,因为调用代码只能与WORDS
一起使用,而不是DWORDS