我正在将我的应用程序升级到VS2010中的64位平台。 我想解决下面的警告,这是正确的方法吗?我不想更改MyVar的数据类型,因为此变量在许多函数中用作参数。如果我想输入“strlen(Mystring)”的输出到const int那么该怎么做。
$name = $emailContent[0]->name;
$email = $emailContent[0]->email;
$message = $emailContent[0]->message;
答案 0 :(得分:3)
您有多种选择:
全局忽略警告 - 我真的不推荐这个。在某些时候,您将遇到4GB + 1"",分配给UINT
,并截断。
忽略此特定行上的警告,并注释为何这是安全的。这对我来说有点代码味道,非常嘈杂,而且不便携。
更改MyVar
的类型。你说你不想这样做。在这种特殊情况下,这是合理的,但事后看来MyVar
几乎肯定会被声明为size_t
。
静态演员:auto MyVar = static_cast<UINT>(aSel - strelen(MyString));
。
我认为我更喜欢更改MyVar
的类型,但如果真的太多了,那么static_cast可能是最好的。 (不要使用c风格的演员表 - 你想明确表示你正在做static_cast而不是reinterpret_cast。)
答案 1 :(得分:0)
difference() {
polyhedron(points = [ [21.5,51.9,0],[51.9,21.5,0],
[-21.5,51.9,0],[-51.9,21.5,0],
[-21.5,-51.9,0],[-51.9,-21.5,0],
[21.5,-51.9,0],[51.9,-21.5,0],
[21.5,51.9,100],[51.9,21.5,100],
[-21.5,51.9,100],[-51.9,21.5,100],
[-21.5,-51.9,100],[-51.9,-21.5,100],
[21.5,-51.9,100],[51.9,-21.5,100] ], faces = [
[0,1,9,8],[2,0,8,10],[3,2,10,11],[5,3,11,13],
[4,5,13,12],[6,4,12,14],[7,6,14,15],[1,7,15,9],
[0,1,7,6,4,5,3,2],[8,9,15,14,12,13,11,10] ]);
polyhedron(points = [ [19,49.4,5],[49.4,19,5],
[-19,49.4,5],[-49.4,19,5],
[-19,-49.4,5],[-49.4,-19,5],
[19,-49.4,5],[49.4,-19,5],
[19,49.4,100],[49.4,19,100],
[-19,49.4,100],[-49.4,19,100],
[-19,-49.4,100],[-49.4,-19,100],
[19,-49.4,100],[49.4,-19,100] ], faces = [
[0,1,9,8],[2,0,8,10],[3,2,10,11],[5,3,11,13],
[4,5,13,12],[6,4,12,14],[7,6,14,15],[1,7,15,9],
[0,1,7,6,4,5,3,2],[8,9,15,14,12,13,11,10] ]);
}
是64位。因此,您最好使用size_t
类型而不是size_t
。这样,它在32位和64位系统上都是安全的。