zoukankan      html  css  js  c++  java
  • stb_image multiple definition of first defined here 多文件包含问题

    解决办法:预先定义  STB_IMAGE_IMPLEMENTATION    STB_IMAGE_STATIC 两个宏。

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

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

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

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

  • 相关阅读:
    动态生成表格 (ng-zorro)
    单例服务
    模板变量 #
    HTML 5 系列
    关于tcp nagle算法
    netty 解包头包体的一点认知
    vargent Authentication failure.记录
    关于YII2.0配置的一点问题
    关于mysql b-tree索引的一点认知
    记vagrant nginx sendfile问题
  • 原文地址:https://www.cnblogs.com/weicaiershang/p/13257383.html
Copyright © 2011-2022 走看看