【问题标题】:What am I missing from my declared structure我声明的结构中缺少什么
【发布时间】:2019-02-27 10:32:20
【问题描述】:

我的简单程序出现错误,该程序应该将 C 结构中的值相加。 我看不出我的代码有任何本质上的错误,我会稍微粘贴一下。所有的分号和括号似乎都是有序的,所以我的问题是,我在 struct 声明中遗漏了什么。

错误行:

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);
}

在下面回答以供将来参考

【问题讨论】:

    标签: c function structure


    【解决方案1】:

    struct addDistance(struct distance dist1, struct distance dist2){

    应该是

    struct distance addDistance(struct distance dist1, struct distance dist2){

    你需要为你的结构包含整个类型struct distance,或者因为你使用了typedef,你的返回类型可能是dist。所以也可以

    dist addDistance(struct distance dist1, struct distance dist2){

    当编译器看到struct SOME_NAME 时,它期望struct SOME_NAME 是一个先前已声明的结构,或者您现在正在声明它。因此,您的编译器认为您正在尝试声明一个名为 struct addDistance 的新结构。

    【讨论】:

    • 啊,非常感谢!我不敢相信我错过了这么简单的事情。
    【解决方案2】:

    我认为问题在于,您编写了 struct 而不是 struct distance 作为函数的返回类型和 dist3 的类型。

    【讨论】:

      猜你喜欢
      • 2014-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-04
      • 1970-01-01
      • 2021-04-08
      • 1970-01-01
      相关资源
      最近更新 更多