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}; 


标签:linux
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号