Чего мне не хватает в моей заявленной структуре? - PullRequest
0 голосов
/ 24 сентября 2018

Я получаю сообщение об ошибке для моей простой программы, которая просто должна складывать значения в структуре Си.Я не вижу ничего плохого в своем коде, который я немного вставлю.Все точки с запятой и скобки, кажется, в порядке, поэтому мой вопрос, что я пропускаю в объявлении структуры.

Строка ошибки:

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

Ответил ниже для дальнейшего использования

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

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.

0 голосов
/ 24 сентября 2018

Я думаю, что проблема в том, что вы написали struct вместо struct distance как тип возвращаемого значения функции и как тип dist3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...