将代码从32位移植到64位。有很多地方需要修改。
int len = strlen(pstr);
现在这些代码都会生成警告,因为strlen()返回的是64位的size_t类型,而int类型仍然是32位的。因此,我已经把它们替换成了
size_t len = strlen(pstr);
但我意识到这并不安全,因为size_t是无符号的,但代码可能会将其视为有符号的(实际上我遇到了一种情况,谢谢单元测试!)。
盲目地将strlen返回值强制转换为(int)感觉很不好。或许不应该这样做吗?
所以问题是: 是否有优雅的解决方案?我可能有成千上万行像这样的代码; 我不能手动检查每一个,并且测试覆盖率目前在0.01%到0.001%之间。
len--; if (len < 0) { break }
- Tim