首先吐槽一下,网上的其他的一些内容都是瞎写,根本没有指出问题的根本原因,使用时出现异常情况不能自己解决也说明了C语言基础不牢固,

该头文件可以分为两种情况使用(推荐使用办法2,办法1中有解释原因)(任何一种情况都要在使用前预先定义  STB_IMAGE_IMPLEMENTATION 宏):

1、被当做头文件展开到别的文件中,则其不应该在不同的 .c、.cpp文件中被展开(注意:源文件的头文件会再预处理阶段将其头文件展开,也有可能会变成这种情况),否则相当于在不同的源文件中定义同名的C函数,再编译生成 .o文件时肯定回报重定义的错误。一个解决办法是只在头文件中展开stb_image.h和一个源文件中展开该项。当然这不是最好的解决办法,C语言中为解决多个源文件包含相同的函数提供了更好的办法,相信你已经猜到了------static关键字,其修饰的函数和全局变量只在本文件中可见,这样就不会和其他文件冲突了,也就是情况2。

2、使用前预先定义 STB_IMAGE_STATIC ,稍微查看源码即可直到,添加该宏定义以后,函数会被static修改(否则为extern),完美的解决了重定义的问题。推荐大家使用。

最新文章

  1. 纪念我sgu第一个10题!
  2. Centos最小化安装后联网配置
  3. Android内存管理(3)缓存不要用SoftReference, 用android.util.LruCache
  4. 【风马一族_Android】 图能
  5. Laravel Controllers
  6. C# 循环获取目录
  7. JavaScript之cookie
  8. libcurl的使用问题“Expect100-continue”
  9. BZOJ 1880: [Sdoi2009]Elaxia的路线( 最短路 + dp )
  10. Effective Java 第三版——19. 如果使用继承则设计,并文档说明,否则不该使用
  11. [51nod1310]Chandrima and XOR
  12. Hadoop问题:The auxService:mapreduce_shuffle does not exist
  13. android studio中使用lambda
  14. Linux禁止ping、开启ping设置
  15. 精读《Serverless 给前端带来了什么》
  16. C++标准库第二版笔记 2.1
  17. C# 利用SharpPcap实现网络包捕获嗅探
  18. 5.21http网页基础
  19. 《linux就该这么学》第三节课 第二节命令笔记
  20. IIS远程发布(Web Deploy)

热门文章

  1. (三)linux三剑客之sed
  2. 关于mysql auto-increment
  3. NativeXml实例训练时注意事项_1
  4. Elasticsearch去重查询/过滤重复数据(聚合)
  5. yii2.0AR两表联查
  6. 笨办法学python - 专业程序员的养成完整版PDF免费下载_百度云盘
  7. TestLoader源码解析
  8. for, for in, for of, map, forEach 循环的区别:
  9. JavaWeb的登陆与注销功能
  10. 国内透明代理IP