Ошибка конфликтующих типов при передаче указателя на строку в качестве аргумента функции - PullRequest
1 голос
/ 12 апреля 2019

Error description Как я уже писал в теме, я получаю ошибку конфликтующих типов при попытке передать указатель на структуру, удаленную с использованием массива структур.У вас есть предложения по устранению этой ошибки?Чего мне не хватает?

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#define N 10

void count_length(struct abc *_el);

struct vector {
    double x;
    double y;
};

struct abc {
    struct vector vec;
    double length;
};

int main(void)
{
    struct abc set[N];
    srand(time(NULL));
    for(int i=0; i<N; i++)
    {
        set[i].vec.x = rand();
        set[i].vec.y = rand(); 
        count_length(&set[i]);
    }


}

void count_length(struct abc *_el)
{
    for(int i=0; i<N; i++)
        _el->length = sqrt(pow(_el->vec.x, 2.0) + pow(_el->vec.y, 2.0));
}

1 Ответ

6 голосов
/ 12 апреля 2019

Сохранить объявление функции

void count_length(struct abc *_el); /* compiler don't knows what is struct abc as you have defined it after this statement */

после структуры, а не до. например,

struct vector {
    double x;
    double y;
};

struct abc {
    struct vector vec;
    double length;
};
void count_length(struct abc *_el); /* here compiler knows what is struct abc */
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...