查看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。
这里个问题在预编译中加上宏PROTOBUF_USE_DLLS就可以搞定了