c之linux gcc 链接器与 C 程序的问题
Renyi-Fan
阅读:38
2025-02-15 21:57:57
评论:0
我正在尝试编译一个包含头文件的 C 程序。 但只有 1 个 .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 <stdio.h>
#include "tmp1.h"
int main()
{
printf("hello world\n");
}
请您参考如下方法:
问题是您正在初始化头文件中的变量,因此您会得到重复的符号。您需要使用 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};
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。