如何禁用SCL SECURE WARNING仅为一个函数调用,而不是全局
How disable SCL SECURE WARNING just for a function call and not globaly?
根据MSDN关于_SCL_SECURE_NO_WARNINGS:
调用标准c++库中任何一个可能不安全的方法将导致编译器警告(级别3)C4996。要禁用此警告,请在代码中定义宏_SCL_SECURE_NO_WARNINGS:
#define _SCL_SECURE_NO_WARNINGS
也可以像这样禁用警告:
#pragma warning(disable:4996)
但是…通过使用这些方法中的任何一种,您都可以禁用全局警告,我想在本地禁用,例如:
#pragma warning(disable:4996)
some_string.copy(str, some_string.length());
// #pragma warning(enable:4996) There is something outhere like this?
那里有类似上面代码的东西吗?
使用语法
#pragma warning( push ) // Stores the current warning state for every warning.
#pragma warning( pop ) // pops the last warning state pushed onto the
// stack. Any changes that you made to the warning
// state between push and pop are undone.
可以修改和恢复本地警告配置。
因此,按照问题的示例,您可以禁用然后再次启用警告:
#pragma warning(push) // save the warning conf status.
#pragma warning(disable:4996) // disable specific warning.
// ... // you could disable more than one.
target.copy(str, target.length()); // call
#pragma warning(pop) // restore previous warning conf.
正如Charles Bailey在评论中指出的,你也可以使用:
#pragma warning(default: ...)
但是你必须考虑到如果警告的状态在默认情况下是禁用的,这将不会恢复这种警告再次启用。
例如:默认禁用警告。
// At this point n was enabled.
#pragma warning(disable:n)
// ... some code here
#pragma warning(default:n)
// n remains disabled. Maybe not what you want.
参考:MSDN警告
相关文章:
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 构造函数正在调用一个使用当前类类型的函数
- 如何封装一个函数,以便它只能由同一类中的一个其他函数调用?
- C++ 如何根据作为输入传递的参数调用一个构造函数或另一个构造函数?
- 使用另一个函数调用一个函数(都在类中)时出现问题.没有错误代码C++
- 如何在另一个.cpp文件中调用一个.cpp文件中的函数
- 调用一个小函数两次(例如在if条件和主体中)比将结果存储在局部变量中更可取
- 使用线程从另一个成员函数调用一个Member函数
- 析构函数调用c++中的一个向量
- 编译器错误:函数调用在常量表达式中必须有一个常量值
- 重载运算符主体仅包含一个函数调用
- C++ - 从另一个类构造函数调用类构造函数
- 在 MySQL 连接器C++ API 中使用一个函数调用执行多个查询的正确方法是什么?
- 具有多线程支持的 RenderClass,将函数调用推送到向量以在另一个线程上调用
- C++,当函子不是一个选项时,我如何编写带有自定义函数调用的模板化 RAII 包装器?
- 如何在另一个类中调用一个类的构造函数?
- c++析构函数调用一个delete运算符
- 通过另一类的成员函数调用一个类的成员功能
- 如何从另一个构造函数调用一个c++类的构造函数
- 通过ADL从另一个函数调用一个函数