天天看點

【資料整理】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:

繼續閱讀