刚刚启动C,使用头文件声明等。我正在尝试编写一个测试程序,该程序从结构中获取温度的名称和度数值,例如37开尔文,然后将其转换为所需的温度。 我在头文件中写了一些typedef,struct和enum声明,但现在我很难从主文件中访问它们。我收到的错误是"错误:请求会员&'30; lampotila'在某种结构或联合的东西中;>
我的头文件如下:
#ifndef asteet_h
#define asteet_h
typedef float Lampotila;
typedef char Asteikko[20];
struct Lampotila {
Lampotila lampotila;
Asteikko asteikko;
};
enum Asteikko{
Celsius = 1,
Fahrenheit = 1,
Kelvin = 1
};
float muunna(Lampotila,Asteikko);
#endif
我的主要操作如下:
#include <stdio.h>
#include <string.h>
#include "asteet.h"
int main(int argc,char *argv[]){
float muunna(Lampotila a, Asteikko b){
if(a.asteikko == "Celsius" && b == "Fahrenheit"){
return(a.lampotila*1.8+32);
}
else if(a.asteikkko == "Fahrenheit" && b == "Celsius"){
return((a.lampotila-32)/1-8);
}
else if(a.asteikko == "Celsius" && b == "Kelvin"){
return(a.lampotila + 273.15);
}
else if(a.asteikkko == "Kelvin" && b == "Celsius"){
return(a.lampotila - 273.15);
}
return 0;
}
return 0;
}
我尝试使用以下测试数据运行它:
Lampotila a = {23.5, Celsius};
Lampotila b = {79.7, Fahrenheit};
Lampotila c = {285.8, Kelvin};
Asteikko kelvin = Kelvin;
printf("23.5 C on %.2f K\n", muunna(a, kelvin));
printf("79.7 F on %.2f C\n", muunna(b, Celsius));
答案 0 :(得分:1)
纠正以下问题。
使用结构时,请指定struct key word,或者键入dede struct <structure name>
所以“float muunna(Lampotila a, Asteikko b){
”行将是“float muunna(struct Lampotila a, Asteikko b){
”。这将清除您的错误。
else if(a.asteikkko == "Fahrenheit" && b == "Celsius"){
错误,因为asteikkko
在您的结构中只定义了2个k
。