在单独的可执行证据文件中定义结构

时间:2015-02-03 10:08:36

标签: c struct typedef main void

我一直在尝试为我的所有测试编译单独的可执行文件,并收到此错误: “变量具有不完整类型'结构观察','结构偏好','结构气候'”?

#include <stdio.h>
#include "file4.h"
#include <stdlib.h>
#include <math.h>
#include <string.h>

void eanalyze_weather()
{
  struct observations day1;
  day1.temp = 70.0;
  day1.humid = 30.0;
  day1.wind = 5.0;

  struct observations day2;
  day2.temp = 74.0;
  day2.humid = 24.0;
  day2.wind = 0.0;

  struct observations day3;
  day3.temp = 84.0;
  day3.humid = 18.0;
  day3.wind = 10.0;

int main(void)
{

  econcat();
  euint_to_binary();
  ebinary_to_uint();
  eanalyze_weather();
  return 0;
}

当我尝试在单个文件中运行“main”中的所有内容时,它会正确编译并且代码可以正常工作,但是当我尝试这样做时,它不会编译。有谁知道这是为什么?

谢谢。

1 个答案:

答案 0 :(得分:0)

此错误是因为struct observations的定义在包含main()的文件中不可见,因为其他文件中的定义[单独的翻译单元]。

一种解决方法(通常的最佳做法)是将结构的定义放在头文件中,不要忘记包含一些include guard