我正在尝试编译包含头文件到.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