C 关于访问在不同源文件中定义的结构

C 关于访问在不同源文件中定义的结构,c,struct,C,Struct,没有任何家庭作业,但似乎在做基础作业时迷路了,于是问 假设我有2个C源文件。1.c&2.c 2.c如下: typedef struct mystr_ { int a; float b; }mystr; void fun() { mystr q; some code.... } 1.c如下所示: #include "stdio.h" void fun(); main() { //How to access / declare a variable

没有任何家庭作业,但似乎在做基础作业时迷路了,于是问

假设我有2个C源文件。1.c&2.c

2.c如下:

typedef struct mystr_
{
    int a;
    float b;
}mystr;

void fun()
{
    mystr q;

    some code....
}
1.c如下所示:

#include "stdio.h"

void fun();


main()
{
    //How to access / declare a variable of type mystr here.

    mystr *v1;//This obviously gives compiler errors

      some code....    

}
如何从文件1.c访问2.c中定义的结构mystr,以便在其中包含该结构类型的变量

编辑:


很抱歉,在OP中忘了提及。由于某种原因,我无法将声明移出头文件-->我正在尝试签入现有代码,这是一种快速破解。那么有没有办法直接从另一个源文件访问它?

使用头文件

创建一个文件
2.h

typedef struct mystr_
{
    int a;
    float b;
}mystr;
并将其包含在
1.c

#include "2.h"
#include "stdio.h"

void void fun();
编辑: 因为您无法将声明提取到头文件中并包含它,所以除了复制声明之外,没有其他方法。这是一个非常脆弱的结构,快速但主要是脏的,除非您没有其他选项,否则不推荐使用。

使用标题

创建一个文件
2.h

typedef struct mystr_
{
    int a;
    float b;
}mystr;
并将其包含在
1.c

#include "2.h"
#include "stdio.h"

void void fun();
编辑:
因为您无法将声明提取到头文件中并包含它,所以除了复制声明之外,没有其他方法。这是一个非常脆弱的结构,快速但主要是脏的,除非您没有其他选项,否则不推荐使用。

在头文件中定义
mystr
,并将其包含在两个C文件中。无法从其他源文件访问它。在头文件中定义
mystr
,并将其包含在两个C文件中。无法从其他源文件访问它文件。很抱歉,在OP中忘了提及。由于某种原因,我无法将声明移出头文件-->我正在尝试签入现有代码,这是一种快速的攻击。那么有没有办法直接从另一个源文件访问它?您可以随时复制并粘贴:-)谢谢。复制粘贴了1.c中的结构定义,我可以创建该类型的变量。不确定是重新声明还是重新定义结构mystr?很明显,重新声明在工作时没有重新定义错误。你能在回答中添加你的评论吗?“将声明复制到所需的源文件中”。我想接受它。因为它只是这个问题的另一个有效解决方案(可能不理想,但有效!),所以它并不完全是一个重新声明,因为它只被解析一次。它是一个新的声明,恰好与另一个文件中的声明完全匹配。一个非常脆弱的构造,快速但主要是脏的。很抱歉,我忘了在OP中提及。由于某种原因,我无法在头文件中移出声明-->我正在尝试签入现有代码,这是一个快速的攻击。那么有没有办法直接从另一个源文件访问它?您可以随时复制并粘贴:-)谢谢。复制粘贴了1.c中的结构定义,我可以创建该类型的变量。不确定是重新声明还是重新定义结构mystr?很明显,重新声明在工作时没有重新定义错误。你能在回答中添加你的评论吗?“将声明复制到所需的源文件中”。我想接受它。因为它只是这个问题的另一个有效解决方案(可能不理想,但有效!),所以它并不完全是一个重新声明,因为它只被解析一次。它是一个新的声明,恰好与另一个文件中的声明完全匹配。一个高度脆弱的结构,快速但主要是脏的。