如何访问另一个文件中的结构元素?必须文件让我们说1.cpp和2.cpp,我正在同时编辑这两个文件,如gcc 1.cpp 2.cpp,但我收到错误如下
1. warning: ‘struct st’ declared inside parameter list [enabled by default]
2. warning: its scope is only this definition or declaration, which is probably not what you want [enabled by default]
3.dereferencing pointer to incomplete type
请帮我修复我的代码
1.C
#include<stdio.h>
struct st
{
int s;
char ch[20];
};
void fn(struct st *);
int main()
{
struct st var={2,"pravu"};
fn(&var);
}
2.C
#include<stdio.h>
void fn(struct st *p)
{
printf("%d\n",p->x);
printf("%s\n",p->ch);
}
我正在编译为gcc 1.c 2.c?
答案 0 :(得分:2)
您需要将结构的定义放在头文件中。这样所有c / cpp文件都将使用相同的定义;像这样:
2.H
#ifndef 2_H_
#define 2_H_
struct st
{
int s;
char ch[20];
};
void fn(struct st *);
#endif
1.C
#include "2.h"
#include<stdio.h>
int main()
{
struct st var={2,"pravu"};
fn(&var);
}
2.C
#include "2.h"
void fn(struct st *p)
{
printf("%d\n",p->x);
printf("%s\n",p->ch);
}
编辑:请注意,我还在头文件中移动了函数fn(struct st *p)
的“前向声明”。那是更好的做法...
EDIT2 :我考虑了@JonathanLeffler的言论