【发布时间】:2017-11-14 12:55:56
【问题描述】:
我正在编写一个遗留的 pro* C/C++ 代码,并将项目迁移到 Visual Studio 2015。当我在 VS 中编译代码时,它在 100 多个地方给了我以下警告消息。
warning C4267: '=': conversion from 'size_t' to 'unsigned short', possible loss of data
对应的代码是
stmt.len = strlen((char*)stmt.arr); // VARCHAR stmt[500];
我本来打算把上面的代码改成
stmt.len = static_cast<unsigned short>(strlen((char *)stmt.arr));
这只会删除警告消息。但是我要修改100多个地方。有没有办法摆脱这个警告信息可能是使用某种宏? 请提出建议。
谢谢
【问题讨论】:
-
@NJMR 如果您可以将数据成员 stmt.len 重新声明为 size_t 类型。:)
-
更改
len成员的类型? -
像
(char*)stmt.arr这样的 C 风格转换通常表明你做错了。 -
@VladfromMoscow:VARCHAR 是专业的* C/C++ 数据类型。我无法修改它。
标签: c++ visual-studio-2015 oracle-pro-c