Рассмотрим этот код:
LARGE_INTEGER l;
size_t s;
if (s < l.QuadPart) return 1;
return 0;
Когда это скомпилировано в x64, оно генерирует C4018
предупреждение компилятора со знаком / без знака (игнорировать предупреждение о неинициализированной локальной переменной).
Предупреждение в порядке, поскольку QuadPart
- это LONGLONG
, которое подписано, а size_t
- без знака.
Но когда я компилирую это под 32-битную версию, предупреждение не появляется? Как так? Под 32-битным LONGLONG
все еще подписан, а size_t
не подписан.