没有标题的外部结构
我必须使用不同的文件:main.c 和 source.c。我想在 main.c 文件中 scanf 和 printf 信息,但要使用 source.c 中的结构。我不知道如何在不使用标头的情况下使用另一个文件中的结构。我尝试过使用 extern,但这是完全错误的。
你能教我在谈论结构时如何使用 extern
举例(仅举例)
main.c
typedef struct Node{
int n;
int p[22];
int z[33];
}Node;
Node a;
void sum (int i,int j, Node *sum);
main(){
int i,j;
scanf("%d",&i);
scanf("%d",&J);
sum (i,j,&a)
printf("%d",a.k);
return 0;
}
source.c
extern Node a;
void sum (int i,int j, Node *sum){
a.n = i+j;
}
I have to different files : main.c and source.c. I want to scanf and printf information in main.c file, but to work with structure in source.c. I don't know how to use structure in another file without using headers. I've tryied to use extern, but that was totally wrong.
Can you teach me how to use extern when we talk about structure
For example (just example)
main.c
typedef struct Node{
int n;
int p[22];
int z[33];
}Node;
Node a;
void sum (int i,int j, Node *sum);
main(){
int i,j;
scanf("%d",&i);
scanf("%d",&J);
sum (i,j,&a)
printf("%d",a.k);
return 0;
}
source.c
extern Node a;
void sum (int i,int j, Node *sum){
a.n = i+j;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我将忽略您不想使用标头的部分,因为我怀疑这是基于误解。
您需要使用
extern
在标头中进行声明和 typedef(如果需要,但无论如何不鼓励使用全局变量)。using 和 any 定义位于 .c 文件中,其中
#include
标头。main.c
source.c
myheader.h
注意,我同意 Darth-Codex 的观点,这里不需要全局变量(因为指针参数提供了所有需要的访问),并且应该有一个更干净的
main()
原型被使用(以及我可能找到的其他任何东西......)。这意味着全球可以更好地被主要本地取代。I am going to ignore the part that you do not want to use headers, because I suspect that is based on a misunderstanding.
You need to do the declaring and the typedefs in a header, using
extern
(if necessary, but globals are discouraged anyway).The using and any definitions are in .c files, which
#include
the headers.main.c
source.c
myheader.h
Note, I agree with Darth-Codex, that global variable is unneeded here (because the pointer parameter provides all needed access) and that a cleaner
main()
prototype should be used (and whatever else I may find....). And that means that the global could better be replaced by a main-local.