【发布时间】:2011-09-19 12:37:11
【问题描述】:
我正在寻找将大量代码转换为 64 位的最佳方法。有人建议我研究一些静态代码分析工具,例如 cpptest,以发现可移植性问题。有人对我可以使用什么有任何建议吗?还是将代码移植到 64 位的有效方法?
环境:windows、vs2008(我知道 VS 中的“检测 64 位可移植性问题”选项,但我需要更好的)。
示例:一个可以发现这种明显类型的 64 位可移植性错误的工具。
for (int i = 0; i < 64; i++)
{
__int64 n64 = (1 << i); // Does not generate warning
}
【问题讨论】:
-
64 位可移植性问题 怎么样?好像在移植之前就已经坏掉了。我会更担心
for (int i = 0; i != 32; ++i) { unsigned long k = 1<<i; foo(k); }- 32 可能需要变成 64,但在静态代码分析中很难分辨。 -
64 位编译器是一个相当不错的诊断工具,只要将警告级别设置为 11。
标签: c++ 64-bit portability static-analysis