gpt4 book ai didi

c - 如何使用 'c' 语言中的 extern 关键字访问在其他文件中声明的结构

转载 作者:行者123 更新时间:2023-11-30 16:04:00 25 4
gpt4 key购买 nike

我有 3 个文件。在一个文件中我声明了一个结构,在另一个具有 main 的文件中,我尝试使用 extern 关键字 -------- 访问该结构

//a.c---

include<stdio.h>
extern struct k ;
extern int c;
int main()
{
extern int a,b;
fun1();
fun2();
c=10;
printf("%d\n",c);
struct k j;
j.id=89;
j.m=43;
printf("\n%d\t%f",j.id,j.m);
}


//1.c

#include<stdio.h>
struct k
{
int id;
float m;
}j;

int c;
void fun1()
{
int a=0,b=5;
printf("tis is fun1");
printf("\n%d%d\n",a,b);
}


//2.c--

#include<stdio.h>
struct k
{
int id;
float m;
}j;

void fun2()
{
int a=10,b=4;
printf("this is fun2()");
printf("\n%d%d\n",a,b);
}

我使用cc a.c 1.c 2.c编译了此代码但我收到错误,因为 “j”的存储大小未知

最佳答案

//a.h---

#include<stdio.h>
#include "1.h"//cannot know its there without including it first.
#include "2.h"
extern struct k;// don't really need to do this and is wrong.
extern int c;

//a.c
int main()
{
extern int a,b;//externs i believe should be in the h file?
fun1();
fun2();
c=10;
printf("%d\n",c);
struct k *ptr = malloc(sizeof(struct k));//Define our pointer to the struct and make use of malloc.
//now we can point to the struct, update it and even retrieve.
ptr->id = 89;
ptr->m = 43;
printf("\n%d\t%f" ptr->id,ptr->m);
}


//1.h

#include<stdio.h>
typeof struct k
{
int id;
float m;
}j;

//1.c
int c;
void fun1()
{
int a=0,b=5;
printf("tis is fun1");
printf("\n%d%d\n",a,b);
}


//2.h--

#include<stdio.h>
struct k
{
int id;
float m;
}j;

//2.c
void fun2()
{
int a=10,b=4;
printf("this is fun2()");
printf("\n%d%d\n",a,b);
}

我已经在某些地方编辑了您的代码,因此它应该看到该结构并指向它。每个 C 文件都应该知道有一个头 h 文件。当属于您的 main 的 a.h 包含文件时,它不仅可以看到它们,而且应该能够访问它们。这意味着如果我没记错的话,它也应该知道 K 是什么 J 是 K 的别名。

我应该知道更新结构并通过指针从中检索数据。如果这仍然不起作用,请发布您的编译错误并复制并粘贴其哭泣的行。

关于c - 如何使用 'c' 语言中的 extern 关键字访问在其他文件中声明的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3572688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com