我一直在尝试为我的所有测试编译单独的可执行文件,并收到此错误: “变量具有不完整类型'结构观察','结构偏好','结构气候'”?
#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”中的所有内容时,它会正确编译并且代码可以正常工作,但是当我尝试这样做时,它不会编译。有谁知道这是为什么?
谢谢。
答案 0 :(得分:0)
此错误是因为struct observations
的定义在包含main()
的文件中不可见,因为其他文件中的定义[单独的翻译单元]。
一种解决方法(通常的最佳做法)是将结构的定义放在头文件中,不要忘记包含一些include guard。