VS錯誤解決 C4146 一元負運算符應用於無符號類型 結果仍爲無符號類型
在VS2015下編譯NTL庫的時候,我編譯了NTL庫源代碼生成靜態鏈接庫,在應用程序設置那一步,雖然將應用程序選成了靜態鏈接庫,也沒有勾選預編譯頭,但是忽略了附加選項裏面的“安全開發聲明週期(SDL)檢查”,沒去掉勾選直接就點擊完成了。
隨後添加ntl-src並且附加include目錄,但是在生成解決方案的時候,出來一百多個錯誤,這些錯誤都是C4146 一元負運算符應用於無符號類型 結果仍爲無符號類型,
顯然這是SDL搞的鬼。安全開發生命週期(SDL)/ GS編譯器能協助安全軟件開發的範圍之外的建議。這些從具體的代碼生成功能,如使用安全相關的編譯器警告和更多的一般性建議適當初始化或消毒指針strict_gs_check範圍。
解決:
點擊“右鍵項目-屬性-常規”,將SDL檢查改爲否即可。再一次生成解決方案,便沒有了之前的錯誤。