gpt4 book ai didi

c++ - 抑制警告 C4996 : why not working?

转载 作者:行者123 更新时间:2023-12-01 13:09:13 25 4
gpt4 key购买 nike

语境:
我正在玩 Eigen 库的样条拟合模块。
合身效果很好,但我确实收到了一些警告(在 Visual Studio 2013 中)。

问题:
为什么我能够禁用一些警告,而其他警告即使在它们应该被抑制后仍然存在?

更多背景:
我得到的“行为良好”警告是

警告 C4714:函数 'const Eigen::Matrix Eigen::DenseBase::eval(void) const' 标记为 __forceinline 未内联

经过一番研究,我了解到这确实与使用特征码有关。因为我不想产生警告,

#pragma 警告(禁用:4714)

很好地抑制它。

“顽皮”警告是警告 C4996: 'std::_Partial_sum2': 带有可能不安全参数的函数调用 - 此调用依赖调用者检查传递的值是否正确。要禁用此警告,请使用 -D_SCL_SECURE_NO_WARNINGS。请参阅有关如何使用 Visual C++ 'Checked Iterators' 的文档
起源于特征的 ChordLengths 函数。然而,这一个不会让自己被#pragma warning(disable : 4996) 抑制
(而且我很确定间距没有问题,或者上面的 4714 可以很好地工作),也没有工作

#define _SCL_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS

或来自 this 的任何内容线程或所有其他类似线程。

这是为什么?我忽略了一些明显的东西吗?

现在我以一种相当丑陋的方式“解决”了这个问题:我已经将 ChordLengths 函数重写到我的代码中,替换了有问题的行

std::partial_sum(chord_lengths.data(), chord_lengths.data()+n,chord_lengths.data());

有我自己的版本。我不喜欢这种方法,但它解决了问题。不过,我更愿意理解为什么我试图抑制警告的任何方法都不起作用。

奖励:我实际上如何抑制警告?

最佳答案

感谢 WhozCraig 解决了

解决方案:警告抑制需要放在任何包含之前,因为其中一些显然也包含特征。

关于c++ - 抑制警告 C4996 : why not working?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56132985/

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