MFC工程调用cJSON.c出现C1853错误的解决办法(老版本C文件加入新的C++项目)
环境
Visual Studio 2017
现象
头文件cJSON.h与源文件cJSON.c添加入工程后,编译出现如下C1853错误。
cjson.c : fatal error C1853: “Debug\XXX.pch”预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)
解决方法
1、在解决方案资源管理器中右击cJSON.c文件,选择属性。
2.在cJSON.c属性页,选择配置属性>C/C++>预编译头,配置改为“所有配置”,修改预编译头为“不适用预编译头”。
更改后出现
error C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
诸如此类的问题
原因解释
这种微软的警告,主要因为那些C库的函数,很多函数内部是不进行参数检测的(包括越界类的),微软担心使用这些会造成内存异常,所以就改写了同样功能的函数,改写了的函数进行了参数的检测,使用这些新的函数会更安全和便捷。关于这些改写的函数你不用专门去记忆,因为编译器对于每个函数在给出警告时,都会告诉你相应的安全函数,查看警告信息就可以获知,在使用时也再查看一下MSDN详细了解。库函数改写例子:
mkdir改写为 _mkdir
fopen”改写为 fopen_s
stricmp改写为 stricmp_s
sprintf改写为sprintf_s
strcpy改写为strcpy_s
方法一:调用VS2005鼓吹的那些带“_s”后缀的非标准函数,即在其后加上"_S",如sprintf改为sprintf_s 。
方法二:在文件最开始添加#define _CRT_SECURE_NO_DEPRECATE或#pragma warning(disable:4996) ,这是忽略警告的方法(一般比较少用)。
方法三:干粹在工程属性中设置(推荐)。
在工程属性中设置的方法如下:
对于VC6:
打开Project----settings----Resources----Preprocessor definitions,
添加_CRT_SECURE_NO_DEPRECATE和_SCL_SECURE_NO_DEPRECATE这两个宏。
对于VS系列的版本:
打开项目----项目属性---配置属性----C/C++ ----预处理器----预处理定义,
添加_CRT_SECURE_NO_DEPRECATE和_SCL_SECURE_NO_DEPRECATE这两个宏。
诸如此类问题
最新文章
- MySQL 调优基础(五) Linux网络
- apache+tomcat分布式搭建
- PS太大GIMP可用
- initrd映像文档的作用和制作
- the-type-java-lang-charsequence-cannot-be-resolved-in-package-declaration
- 使用PHP处理POST上传时$_FILES数组为何为空
- Lua和Javascript差异对比
- phpeclipse xdebug 配置配置 -摘自网络
- PHP静态成员变量和非静态成员变量
- django的模板(二)
- Ubuntu 搭建 GlusterFS 过程笔记
- Android图表库MPAndroidChart(四)——条形图的绘制过程过程,隐隐约约我看到了套路
- Flink的分布式缓存
- R语言学习——图形初阶之折线图与图形参数控制
- [Android GMS 认证] keystore/keymaster/Attestation的问题
- 数据结构和Java集合
- Golang 临时对象池 sync.Pool
- lintcode-13-字符串查找
- 逻辑漏洞-客户端验证的邮箱-Web渗透实例之中国教育部青少年普法网站逻辑漏洞
- celery中的生产者消费者问题
热门文章
- CCF 201909-1	小明种苹果
- pod init 失败
- linux下安装jdk8,nginx
- git 提示 fatal: Authentication failed for....
- Ubuntu20.04修改环境变量失误导致开机循环——解决方法以及保存profile
- srcrpy手机投屏软件
- 5.mysql的explain的分析
- 20230225 TI Electromagnetic compatibility testing methods and standards
- 微信小程序之配置业务域名踩过的坑
- CSP-S T3函数调用