外部阵列,如何使用

时间:2012-02-21 12:16:23

标签: c segmentation-fault extern

我想使用大小为50的外部字符数组。

我有extern.h

extern char arr[50];

我有一个我在那里访问arr

我的b.c是我的驱动程序文件。

我也有a.h在a.c

中有函数的定义

现在在我的驱动程序文件b.c中我有

#include"extern.h"
#include"a.h"
char arr[50];
int main()
{
//call to function in a.c
}

在我的a.c中我有

#include"a.h"
#include"extern.h"
int function1()
{
//accessing arr, say printing arr[1]
}

这给了我一个错误。

我是否包含文件权限,我在extern.h和b.c中的外部var声明是正确的。?

导致seg故障的原因是什么?

1 个答案:

答案 0 :(得分:0)

使用 extern 的方式没有问题。

如果b.c中的 extern 声明会隐藏char arr[50];声明,那么就会出现链接错误。

extern char arr[50];
char arr[50];
int main() {
  //call to function in a.c
}

问题必须在其他地方。也许在使用 printf 的方式?

printf("%c\n", arr[1]);  // works
printf("%s\n", &arr[1]); // may cause a seg fault depending on arr content