天天看点

【资料整理】Security Features in the CRT

     许多老旧的 crt 函数都有更新且更加安全的后续版本。在安全版本存在的情况下,老旧版本都会被标识为废弃(deprecated)的状态,而安全版本都会以 "_s" 作为后缀。

注意:上面提到的废弃的状态不代表函数已经从 crt 中被移除,而是表示不推荐使用。而安全版本同样不能阻止或者自行修正安全错误,而是其能够在这类错误发生时将错误进行捕获,因为这类函数会对发生的错误条件进行额外的检查。

【消除废弃警告】

方法一:定义 _crt_secure_no_warnings 宏,或者直接使用 #pragma warning( disable : xxxx ) 。这种方法只能起到眼不见心不烦的效果。

方法二:使用 “安全模板重载(secure template overloads,)”的方法。这种方法是通过重载的方式将老旧版本替换为新的安全版本来真正做到安全增强的,与此同时,老旧版本函数的名字仍旧可以照常使用。使用该方式时,需要定义宏 _crt_secure_cpp_overload_standard_names。对于默认不存在“安全模板重载”的那些函数,需要自行手动更新你的代码来达到使用安全版本的效果。

方法三:还有另外一种与安全无关的废弃警告的情况,是关于 posix 函数的。可以通过将 posix 函数名字更新到其对应的标准等价版本(一般是函数明前增加_)的方式消除警告;也可以通过定义宏 _crt_nonstdc_no_warnings 来屏蔽与 posix 函数废弃相关的警告。

ps:

继续阅读