gpt4 book ai didi

c++ - 如何为 std::vector 复制或分配隐式缩小转换禁用 Visual Studio 警告 C4244

转载 作者:搜寻专家 更新时间:2023-10-31 00:08:47 24 4
gpt4 key购买 nike

想要执行 double vector 到浮点 vector 的缩小转换。而且我不希望 Visual Studio 抛出警告 C4244,“可能丢失数据”,即缩小转换。

请不要发表评论或回答说我不应该这样做。我知道后果。我只想抑制警告。禁用此特定功能范围之外的警告是 Not Acceptable ,例如全局通过项目设置。

我还想使用 vector::copy 或 vector::assign。通过带有 static_cast<> 的 transform() 或 for_each() 避免警告是......对我的口味来说太明确了。所以这个问题是如何禁用警告,而不是避免它。

我的警告抑制尝试不起作用:

vector<float> DoubleVectorToFloat( vector<double> & x ){
#pragma warning( push )
#pragma warning( disable : 4244 )
return vector<float>( x.begin(), x.end() );
#pragma warning( pop )
}

我知道禁用警告是不好的。但一种尺寸并不适合所有人。我的图书馆是实时的,处理 10 的 MiB/s。我想要调用模板 _Copy_unchecked1(etc);我不想支付错误检查的性能损失。

最佳答案

要禁用此类警告,您可能必须将此函数放入其自身的模块中并禁用顶部的警告:

// top-of-file
#pragma warning( disable : 4244 )

// All your includes here

std::vector<float> DoubleVectorToFloat( std::vector<double> & x ){
return std::vector<float>( x.begin(), x.end() );
}
// end-of-file

关于c++ - 如何为 std::vector 复制或分配隐式缩小转换禁用 Visual Studio 警告 C4244,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46891586/

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