Является ли использование 0xfffffff надежным способом установить все биты в 32-разрядном типе?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Является ли использование 0xfffffff надежным способом установить все биты в 32-разрядном типе?

Сообщение Anonymous »

Есть этот код, который компилируется с Windows sdk: < /p>

Код: Выделить всё

UINT cFiles = DragQueryFileW(hDrop, 0xFFFFFFFF, NULL, 0);
где dragqueryfilew () имеет эту подпись:

Код: Выделить всё

UINT DragQueryFileW(HDROP, UINT, LPWSTR, UINT );
и uint определяется где -то в заголовках SDK, как это:

Код: Выделить всё

typedef unsigned int UINT;
Для платформы, где int , безусловно, 32-битный. Как обычно, такие типы, как uint , должны иметь фиксированную ширину, независимую от системной битовой, поэтому, если тот же код должен быть перекомпилирован на какой-то другой платформе, где Dragqueryfilew () каким-то образом повторно внедрится, также будет соответствующий тип , который сделает на подходящую 32-бедующую тип. Статический инструмент анализа, который рассматривает 0xffffffff постоянную и жалуется на то, что это невозможное магическое число, и вместо этого следует использовать -1 . В то время как, конечно, -1 хорош и портативен, я не могу видеть, как использование постоянного 0xffffffff может быть проблемой здесь, так как даже при портировании тип все еще будет 32 -разрядным, а константа будет хорошо.>

Подробнее здесь: https://stackoverflow.com/questions/650 ... 2-bit-type
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»