移植到64位时如何避免size_t转换为int警告?

bus*_*rer 8 c++ 64-bit

我必须将非常大的C ++传统代码库转换为64位。我已经设法编译了一个基本模块,但是即使在这个小模块中,我也会收到800条警告:

warning C4267: = conversion from size_t to int, possible loss of data
Run Code Online (Sandbox Code Playgroud)

我知道为什么会出现这些,但是要摆脱它们我有什么选择?有没有什么系统的方法可以避免碰到每个实例?

ana*_*lyg 3

一种选择是禁用“数据丢失”警告。为了限制禁用警告的影响,MS Visual Studio 有push以下pop指令:

#pragma warning(push)
#pragma warning(disable: 4267)
// legacy code
#pragma warning(pop)
// normal code
Run Code Online (Sandbox Code Playgroud)

这些#pragma指令特定于 Visual Studio;你可能想用 包裹它们#ifdef _MSC_VER