我声明的结构中缺少什么

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.

的新结构