Я наткнулся на следующий фрагмент кода, который вставляет 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