我想使用大小为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故障的原因是什么?
答案 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