c/c++语言开发共享linux gcc链接器C程序的问题

我正在尝试编译包含头文件到.c文件的ac程序。 但只有一个.c文件真正使用头文件中定义的变量。 这是一些将生成链接器问题的示例代码。 我试图让我的头文件包含由2个不同的.c文件使用的全局变量…任何类型的帮助将不胜感激。 谢谢。

tmp1.h文件

#ifndef TMP1_H_1 #define TMP1_H_1 double xxx[3] = {1.0,2.0,3.0}; #endif 

tmp1.c文件

 #include "tmp1.h" void testing() { int x = 0; x++; xxx[1] = 8.0; } 

main1.c文件

 #include  #include "tmp1.h" int main() { printf("hello worldn"); } 

    问题是你正在初始化头文件中的变量,所以你得到重复的符号。 您需要使用extern关键字声明double xxx ,然后在.c文件中初始化它。

    像这样:

     #ifndef TMP1_H_1 #define TMP1_H_1 extern double xxx[3]; #endif 

    然后在其中一个.c文件中:

     double xxx[3] = {1.0,2.0,3.0}; 

    不要将代码放在头文件中,它是“多重定义的符号”链接器错误的配方。 在头文件中对全局变量进行extern引用,然后在一个C文件(甚至是新文件)中定义实际的全局变量。

    将extern设为xxx并在.c文件中定义xxx。

      以上就是c/c++开发分享linux gcc链接器C程序的问题相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/541638.html

      (0)
      上一篇 2021年1月3日
      下一篇 2021年1月3日

      精彩推荐