gpt4 book ai didi

c++ - 警告 C4267 : 'initializing' : conversion from 'size_t' to 'UINT'

转载 作者:行者123 更新时间:2023-11-28 00:07:21 25 4
gpt4 key购买 nike

我正在将我的应用程序升级到 VS2010 中的 64 位平台。我想解决以下警告,正确的方法是什么?我不想更改 MyVar 的数据类型,因为此变量在许多函数中用作参数。如果我想将“strlen(Mystring)”的强制转换输出键入 const int 那么该怎么做。

const int aSel = 40;
UINT MyVar= aSel - strlen( Mystring );//Warning C4267

最佳答案

您有多种选择:

  1. 全局忽略警告 - 我真的不推荐这个。在某些时候你会遇到一个 4GB+1 的“东西”,分配给 UINT , 并截断。

  2. 忽略此特定行上的警告,并注释为什么这是安全的。这对我来说有点代码味,而且非常嘈杂,而且不可移植。

  3. 更改 MyVar 的类型.你说你不想那样做。在这种特殊情况下,这是合理的,但事后看来 MyVar几乎肯定应该被声明为 size_t .

  4. 静态转换:auto MyVar = static_cast<UINT>(aSel - strelen(MyString)); .

我想我更喜欢更改 MyVar 的类型,但如果这真的是太多的工作,那么 static_cast 可能是最好的。 (不要使用 c 风格的强制转换 - 您要明确表示您正在执行 static_cast 而不是 reinterpret_cast。)

关于c++ - 警告 C4267 : 'initializing' : conversion from 'size_t' to 'UINT' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34783642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com