外部数组,如何使用

发布于 2025-01-07 14:59:40 字数 561 浏览 0 评论 0原文

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

我有 extern.h,

extern char arr[50];

我有 ac,我可以在其中访问 arr

我有 bc 那是我的驱动程序文件。

另外,我在 ac 中也有函数定义,

现在在我的驱动程序文件 bc 中,我有

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

,在我的 ac 中,

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

这给了我 seg 错误。

我是否包含正确的文件,并且我在 extern.h 和 bc 中的外部 var 声明是否正确?

导致段错误的原因是什么?

I want to use external character array say of size 50.

i have extern.h

extern char arr[50];

i have a.c where i am accessing the arr.

and i have b.c that is my driver file.

Also i have a.h having definitions of functions in a.c

Now in my driver file b.c i have

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

and in my a.c i have

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

This gives me seg fault.

Am i including the file right, and my declaration of external var in extern.h and in b.c are correct.?

What is causing the seg fault?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

面如桃花 2025-01-14 14:59:40

您使用 extern 的方式没有问题。

如果 bc 中的 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

There is no problem in the way you are using extern.

If the extern declaration in b.c would hide the char arr[50]; declaration, then you would have a linkage error.

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

The problem must be elsewhere. Maybe in the way printf is used?

printf("%c\n", arr[1]);  // works
printf("%s\n", &arr[1]); // may cause a seg fault depending on arr content
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文