如何访问另一个文件中的结构元素?

时间:2014-10-27 16:29:26

标签: c struct

如何访问另一个文件中的结构元素?必须文件让我们说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?

1 个答案:

答案 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的言论