环境

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这两个宏。

诸如此类问题

最新文章

  1. MySQL 调优基础(五) Linux网络
  2. apache+tomcat分布式搭建
  3. PS太大GIMP可用
  4. initrd映像文档的作用和制作
  5. the-type-java-lang-charsequence-cannot-be-resolved-in-package-declaration
  6. 使用PHP处理POST上传时$_FILES数组为何为空
  7. Lua和Javascript差异对比
  8. phpeclipse xdebug 配置配置 -摘自网络
  9. PHP静态成员变量和非静态成员变量
  10. django的模板(二)
  11. Ubuntu 搭建 GlusterFS 过程笔记
  12. Android图表库MPAndroidChart(四)——条形图的绘制过程过程,隐隐约约我看到了套路
  13. Flink的分布式缓存
  14. R语言学习——图形初阶之折线图与图形参数控制
  15. [Android GMS 认证] keystore/keymaster/Attestation的问题
  16. 数据结构和Java集合
  17. Golang 临时对象池 sync.Pool
  18. lintcode-13-字符串查找
  19. 逻辑漏洞-客户端验证的邮箱-Web渗透实例之中国教育部青少年普法网站逻辑漏洞
  20. celery中的生产者消费者问题

热门文章

  1. CCF 201909-1 小明种苹果
  2. pod init 失败
  3. linux下安装jdk8,nginx
  4. git 提示 fatal: Authentication failed for....
  5. Ubuntu20.04修改环境变量失误导致开机循环——解决方法以及保存profile
  6. srcrpy手机投屏软件
  7. 5.mysql的explain的分析
  8. 20230225 TI Electromagnetic compatibility testing methods and standards
  9. 微信小程序之配置业务域名踩过的坑
  10. CSP-S T3函数调用