是否有办法告诉Visual Studio将警告视为警告,而不是错误?



在Visual Studio中,警告C4996(使用已弃用的函数)被视为错误,并且使用已弃用的函数的代码根本无法编译。

有多种方法可以完全禁用C4996,或者在单行、翻译单元或整个项目中禁用它。但是,如果我希望它仍然发出警告,但允许编译而不将其视为错误,该怎么办?

#include <iostream>
[[deprecated]]
void deprecated_function()
{
std::cout << "I function, but have been deprecated.n";
}
int main() {
deprecated_function();
}

这根本无法编译。

#include <iostream>
[[deprecated]]
void deprecated_function()
{
std::cout << "I function, but have been deprecated.n";
}
int main() {
#pragma warning(suppress: 4996)
deprecated_function();
}

编译,但根本不发出警告。

是否有可能告诉Visual Studio发出警告,但仍然允许编译一个已弃用的函数?我在考虑重构的目的,我想把一个函数标记为已弃用,识别所有使用它的地方,但代码仍然在每个中间阶段编译,其中一些但不是所有的已弃用函数的使用已经被替换。

我正在使用Visual Studio 2019 Community 16.8.4编译,警告级别设置为/W3, "将警告视为错误"设置为"否"。如果发出这个特殊的警告,它似乎会被视为错误。

找到可行的解决方案。事实证明,相关标志实际上是"SDL检查",而不是"将警告视为错误"。将其从/sdl翻转到/sdl-会导致编译在编译时发出警告。

编辑:如果我想保留所有SDL检查,除了处理警告C4996作为错误,我可以使用标志/sdl与标志/w34996相结合,这指定4996被视为3级警告而不是错误。

相关内容

  • 没有找到相关文章

最新更新