解决vs2013 error C4308: 负整型常量转换为无符号类型问题(转载)
转自:http://blog.csdn.net/angle635/article/details/22035427
前面在学习使用google的protobuf时在VS2012中一直无法编译编译通过,经过查找一些资料原来发现,并不是protobuf的问题,而是自己在使用VS2012时,没有完全了解VS2012的强大功能,和跟以前VS2010的差别,导致无法编译通过。
现在就来说说为什么没有编译通过,在VS2012创建项目时,会有一个勾选项,叫做“安全开发生命周期(SDL)检查”,这个东西是微软在VS2012新推出的东西,为了是能更好的监管开发者的代码安全,如果勾选上这一项,那么他将严格按照SDL的规则编译代码,会有一些以前常用的函数无法通过编译,比如在VS2010中的scanf是warning那么在VS2012中就是error了。
查看MSDN中对SDL的描述,SDL检查会视以下告警为错误:
/sdl 启用警告 |
等效的命令行开关 |
描述 |
---|---|---|
C4146 |
/we4146 |
一元负运算符应用于无符号类型,从而导致无符号结果。 |
C4308 |
/we4308 |
一个负整型常数转换为无符号类型,从而导致一个可能无意义结果。 |
C4532 |
/we4532 |
__finally /finally中的关键词,使用continue, break 或 goto在异常终止块未定义行为。 |
C4533 |
/we4533 |
初始化变量的代码不会执行。 |
C4700 |
/we4700 |
使用未初始化的局部变量。 |
C4703 |
/we4703 |
对一个潜在的未初始化的局部指针变量的使用。 |
C4789 |
/we4789 |
当使用时,请缓冲区溢出特定 C 运行时 (CRT) 函数。 |
C4995 |
/we4995 |
使用函数的标deprecated。 |
C4996 |
/we4996 |
使用函数的标记作为deprecated。 |
也就是在编译的时候,当SDL检查启用时,编译器会严格检测缓冲区的溢出,并且会在delete某个指针时,自动为这个指针定义一个非有效的值,防止在delete以后仍用到这个指针时出错。还有就是会在你定义一个对象时,自动为这个对象赋值零。
从这些功能来看,有些功能还是不错的,不但方便了程序员使用也增强了程序的健壮性,但是对老版本程序的兼容就会出现问题,以前程序中编译通过的内容也许在VS2012中就没有办法通过,还是大家根据自己的习惯自行考虑是否使用这个东西吧。
另:还有一个选择打开和关闭SDL检查的位置就是:项目属性->配置属性->C/C++->SDL检查,选测是或者否
解决vs2013 error C4308: 负整型常量转换为无符号类型问题(转载)相关推荐
- 负数转换为无符号数据类型的理解及应用
负数转换为无符号类型数据的理解及应用 负数转换为无符号数据类型的理解及应用 有符号整型和无符号整型的转换 有符号类型和无符号类型的转换应用实例 参考文献 负数转换为无符号数据类型的理解及应用 网上有大 ...
- php无符号整数转有符号整数,PHP中把有符号整型转换为无符号整型方法_PHP教程...
PHP中把有符号整型转换为无符号整型方法 这篇文章主要介绍了PHP中把有符号整型转换为无符号整型方法,转换的方法很简单,本文直接给出转换方法,需要的朋友可以参考下 在一个短地址项目中,根据六位字符与I ...
- C语言 有符号类型转换为无符号类型
C语言中变量的类型变换比较多,有些地方需要时刻注意,不然很可能写出带有bug的代码并深埋入系统,难以察觉. 例如 有符号类型和无符号类型运算,有符号类型转换为无符号类型. 需要注意的有两种情况: 1. ...
- php 有符号整数,PHP中把有符号整型转换为无符号整型方法
这篇文章主要介绍了PHP中把有符号整型转换为无符号整型方法,转换的方法很简单,本文直接给出转换方法,需要的朋友可以参考下 在一个短地址项目中,根据六位字符与ID的相互映射的算法,当ID超过214748 ...
- STM32串口通信代码、ASCII码、XU4串口通信,printf只会转换为无符号类型,linux下的串口通信程序
1.其里面的的通信协议是是自己定的,这里 是检测到数据的结尾是以0x0d.0x0a结尾,则表示接受的数据完成了,这个数据是我想要的,这样子就不会出现一些错乱的数据信息.其中的0x8000.0x4000 ...
- java int转无符号_Java中int或long等整型数值如何转换为无符号整数
Java8 为 Integer.Long包装类增加了如下方法: static String toUnsignedString(int/long i):将指定int或long型整数转换为无符号整数对 ...
- 【c++】无符号类型与负数的比较
[c++]无符号类型与负数的比较 博主在学习中,发现这样一个问题: #include<iostream> using namespace std;int main() {unsigned ...
- golang interface 类型转换_无符号Golang程序逆向方法解析
在去年的inctf2018中,出现了一道Go语言编写的进程通信逆向题,无论是从题目整体设计还是解题思路上来说都独树一帜,自己在解题过程中遇到了很多问题,但我这不打算做过多探讨,网上也有大佬的解题过程, ...
- stm32 无符号整形_十进制字符串转化为无符号整数
头文件:#include strtoul() 函数源自于"string to unsigned long",用来将字符串转换成无符号长整型数(unsigned long),其原型为 ...
最新文章
- linux重定向文件容加时间,linux – 如何在Bash中将stdout重定向到文件时添加时间戳?...
- Nuxt爬坑系列之vuex
- Genymotion如何访问本地服务器?
- idea 自动导入包和自动将没用的包去除
- Java_01_Java读取Properties
- when I enter ZSOCIAL role FM RH_STRUC_GET to get organization units that a given user belongs to
- 项目:SQL server 2008构建群集——环境部署
- Silverlight Quick Starts翻译(二):第一章 创建一个Silverlight工程
- 拓端tecdat|R语言中敏感性和特异性、召回率和精确度作为选型标准的华夫图案例
- 深度学习神经网络的预测间隔
- 如何查看 Ubuntu 版本和其他系统信息
- 平流式隔油池计算_隔油池设计方案计算.doc
- 关于近日番茄花园洪磊被拘之事的一些个人看法
- 360度评估工作记录
- #MoreThanCode:社会正义技术
- 除了同性交友平台 GitHub,程序员们业余时间还可以去哪儿?
- 谨以此文,献给我的大学四年—双非本科到双一流985的成长之路
- 文档操作---添加页码、编辑页脚
- 5-35V输入升压8-100V各种升压解决方案 大功率300W
- 分析Threadlocal内部实现原理,并解决Threadlocal的ThreadLocalMap的hash冲突与内存泄露
热门文章
- 2021年中国防水电磁阀市场趋势报告、技术动态创新及2027年市场预测
- 五杆桁架matlab有限元分析,《有限元基础教程》_【MATLAB算例】3.2.5(2)__四杆桁架结构的有限元分析(Bar2D2Node)...
- 安全-认证授权、数据脱敏
- win7局域网计算机 慢,Win7系统网络不稳定时快时慢如何解决?
- LA3516 Exploring Pyramids
- matlab mex文件无效,mexw64找不到指定模块
- 盘点2023天猫淘宝618满减规则和活动时间表
- 演技,新媒体人的必修课
- 一周XX思考(第13期)
- 为什么CAD软件中图块插入时无法分开设置XYZ轴比例?