VS错误解决 C4146 一元负运算符应用于无符号类型 结果仍为无符号类型

VS错误解决  C4146 一元负运算符应用于无符号类型 结果仍为无符号类型

在VS2015下编译NTL库的时候,我编译了NTL库源代码生成静态链接库,在应用程序设置那一步,虽然将应用程序选成了静态链接库,也没有勾选预编译头,但是忽略了附加选项里面的“安全开发声明周期(SDL)检查”,没去掉勾选直接就点击完成了。

VS错误解决 C4146 一元负运算符应用于无符号类型 结果仍为无符号类型

随后添加ntl-src并且附加include目录,但是在生成解决方案的时候,出来一百多个错误,这些错误都是C4146 一元负运算符应用于无符号类型 结果仍为无符号类型

显然这是SDL搞的鬼。安全开发生命周期(SDL)/ GS编译器能协助安全软件开发的范围之外的建议。这些从具体的代码生成功能,如使用安全相关的编译器警告和更多的一般性建议适当初始化或消毒指针strict_gs_check范围。

解决:

点击“右键项目-属性-常规”,将SDL检查改为否即可。再一次生成解决方案,便没有了之前的错误。

VS错误解决 C4146 一元负运算符应用于无符号类型 结果仍为无符号类型