У меня есть существующая кодовая база C, которая работает на x86.
Я сейчас собираю его для x64.
То, что я хотел бы сделать, это привести size_t к DWORD и выдать исключение в случае потери данных.
Q : Есть идиома для этого?
Вот почему я делаю это:
Группа API-интерфейсов Windows принимает DWORD в качестве аргументов, и в настоящее время код принимает sizeof (DWORD) == sizeof (size_t). Это предположение верно для x86, но не для x64. Поэтому при компиляции для x64, передавая size_t вместо аргумента DWORD, генерируется предупреждение во время компиляции.
Практически во всех этих случаях фактический размер не будет превышать 2 ^ 32. Но я хочу кодировать это в обороне и явно.
Это мой первый проект x64, так что ... будьте осторожны.