我声明的结构中缺少什么
What am I missing from my declared structure
我的简单程序出现错误,该程序应该将 C 结构中的值加在一起。
我没有发现我的代码有任何本质上的错误,我会稍微粘贴一下。所有的分号和括号似乎都是有序的,所以我的问题是,我在结构声明中遗漏了什么。
错误行:
Structure.c:7:20: error: expected identifier or ‘(’ before ‘struct’
struct addDistance(struct distance dist1, struct distance dist2){
节目:
#include <stdio.h>
typedef struct distance{
float feet;
float inches;
} dist;
struct addDistance(struct distance dist1, struct distance dist2){
struct dist3;
dist3.feet = dist1.feet + dist2.feet;
dist3.inches = dist1.inches + dist2.inches;
return dist3;
}
int main(){
dist dist1;
dist dist2;
dist1.feet = 2;
dist2.feet = 3;
dist1.inches = 6;
dist2.inches = 4;
addDistance(dist1, dist2);
}
回答如下以供日后参考
我认为问题在于,您将 struct
而不是 struct distance
作为函数的 return 类型和 dist3 的类型。
struct addDistance(struct distance dist1, struct distance dist2){
应该是
struct distance addDistance(struct distance dist1, struct distance dist2){
您需要为您的结构包含整个类型,即 struct distance
,或者因为您使用了 typedef,您的 return 类型可能是 dist
。所以也可以是
dist addDistance(struct distance dist1, struct distance dist2){
当编译器看到 struct SOME_NAME
时,它期望 struct SOME_NAME
是一个先前已声明的结构,或者您正在声明它。因此,您的编译器认为您正在尝试声明一个名为 struct addDistance
.
的新结构
我的简单程序出现错误,该程序应该将 C 结构中的值加在一起。 我没有发现我的代码有任何本质上的错误,我会稍微粘贴一下。所有的分号和括号似乎都是有序的,所以我的问题是,我在结构声明中遗漏了什么。
错误行:
Structure.c:7:20: error: expected identifier or ‘(’ before ‘struct’
struct addDistance(struct distance dist1, struct distance dist2){
节目:
#include <stdio.h>
typedef struct distance{
float feet;
float inches;
} dist;
struct addDistance(struct distance dist1, struct distance dist2){
struct dist3;
dist3.feet = dist1.feet + dist2.feet;
dist3.inches = dist1.inches + dist2.inches;
return dist3;
}
int main(){
dist dist1;
dist dist2;
dist1.feet = 2;
dist2.feet = 3;
dist1.inches = 6;
dist2.inches = 4;
addDistance(dist1, dist2);
}
回答如下以供日后参考
我认为问题在于,您将 struct
而不是 struct distance
作为函数的 return 类型和 dist3 的类型。
struct addDistance(struct distance dist1, struct distance dist2){
应该是
struct distance addDistance(struct distance dist1, struct distance dist2){
您需要为您的结构包含整个类型,即 struct distance
,或者因为您使用了 typedef,您的 return 类型可能是 dist
。所以也可以是
dist addDistance(struct distance dist1, struct distance dist2){
当编译器看到 struct SOME_NAME
时,它期望 struct SOME_NAME
是一个先前已声明的结构,或者您正在声明它。因此,您的编译器认为您正在尝试声明一个名为 struct addDistance
.