Ошибка, назвав функции используя структуры в C

Я очень запутан в этом коде. Я запутываюсь, потому что, если я объявляю сначала мои функции перед структурами, ошибка, которая появляется у меня,

:6:13: ошибка: unknown type 'терпеливый' ямс

Помещая функции перед структурами.

#include <stdio.h>
#include <ncurses.h>
#include <stdlib.h>

int menu();
void datos (paciente pac[]);

typedef struct signos_vitales
{
    int glucosa;
    float temperatura;
    float presion_d;
    float presion_s;
    int pulso;
}signos_vitales;

typedef struct paciente
{
    char paterno[50];
    char materno[50];
    char nombre[50];
    int edad;
    char sexo;
    bool asegurado;
    signos_vitales signos;
}paciente;

main()
{
    int num, m, seg, hiper, hipo;

    printf("Cuantos pacientes quieres registras\n");
        scanf("%d", &num);

    paciente pac[num];

    m = menu();

    switch(m)
    {
        case 1:
            datos(pac);
            break;
    }
}

Но если я меняю порядок и помещаю функции после структур, составив, ошибка меняется и у меня появляется это.

In function main:

hospital.c: (. text+0x87): undefined reference to меню

hospital.c: (. text+0x9e): undefined reference to данные'

collect2: ошибка: ld returned 1 exit статус

Что я врежу?

3
задан 04.04.2016, 09:24
1 ответ

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

В первом случае, который ты комментируешь, "помещать сначала функции и после ты они располагаешь в порядке", проблема, которую находит составитель, состоит в том, что функции используют структуры и, просвет, составитель не знает полностью значение paciente. Это прозвище? Это структура? Указатель в функцию? макрос?. Как он это не знает, что он показывает тебе ошибку, делает аборт и остается так agusto. Это в пользу этого мотива, из-за которого общепринятое состоит в том, чтобы помещать структуры сначала и потом уже, функции.

Во втором случае, что он, кажется, перемещает, дело в том, что составитель закончил фазу составленный правильно, однако в фазе linkado он не был способен находить осуществление menu(). Ввиду того, что в твой пример ты не поместил осуществление вышеупомянутой функции, очевидный вопрос: У тебя осуществление вышеупомянутой функции есть где-то?

Если ответ да, тогда ясно, что он не находится в том же файле, что и функция main(), тебе не хватает include для того, чтобы linker смог делать Вашу работу.

Если ответ - не..., он тебе касается осуществлять функцию, чтобы мочь использовать ее.

(И то же самое для datos())

Приветствие.

2
ответ дан 24.11.2019, 14:39