[C] Błąd typu: undefined reference to (funkcja)

Transpluton
Użytkownik
Użytkownik
Posty: 125
Rejestracja: 1 gru 2012, o 14:45
Płeć: Mężczyzna
Lokalizacja: Zależna od przestrzeni metrycznej...
Podziękował: 94 razy

[C] Błąd typu: undefined reference to (funkcja)

Post autor: Transpluton »

Jestem w trakcie pisania programu i w linijkach 41,42,43,44,45 podczas kompilacjiwyrzuca mi błąd undefined reference to z odniesieniem do poszczególnych funkcji. Czy mógłby mi ktoś napisać jak pozbyć się tych błędów?

Kod: Zaznacz cały

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#define ROZMIAR 16

struct osoba
{
  char imie[ROZMIAR];
  char nazwisko[ROZMIAR];
  int rok;
  struct osoba *nastepny;
};

void pokaz_zawartosc(struct osoba* glowa1); /* wypisuje zawartosc listy */
struct osoba* dodaj_poczatek(struct osoba** glowa1); /* dodaje element na poczatku listy */
void szukaj_rok(struct osoba* glowa1,int lata1); /* wyszukuje element wg. roku */
void dodaj_miejsce(struct osoba** glowa1); /* dodaje element za wyszkuanym indeksem */
void usun_poczatek(struct osoba** glowa1); /* usuwa element z poczatku listy */
void usun_zawartosc(struct osoba** glowa1); /* usuwa zawartosc listy */

int main()
{
    int proces,lata=0;
    struct osoba *glowa=NULL;
    for(;;system("cls"))
        {
            printf("Wybierz polecenie aby edytowac ksiazke z danymi:
");
            printf("[1] --> Wyswietlanie zawartosci listy.
");
            printf("[2] --> Dodawanie elementu na poczatku listy.
");
            printf("[3] --> Wszukiwanie elementu na podstawie roku urodzenia.
");
            printf("[4] --> Dodawanie elementu za wskazanym indeksem.
");
            printf("[5] --> Usuwanie elementu z poczatku listy.
");
            printf("[6] --> Usuwanie calej listy poprzez zwolnienie pamieci.
");
            printf("[0] --> Zakonczenie programu.
");
            printf("Twoje polecenie to: ");
            scanf("%d",&proces);
            system("cls");
            switch(proces)
            {
                case 1 : pokaz_zawartosc(glowa); break;
                case 2 : glowa=dodaj_poczatek(&glowa); break;
                case 3 : szukaj_rok(glowa,lata); break;
                case 4 : dodaj_miejsce(&glowa); break;
                case 5 : usun_poczatek(&glowa); break;
                case 6 : usun_zawartosc(&glowa); break;
                case 0 : return -1; /* spróbuj goto */
            }
        }
    free(glowa);
    return 0;
}

void pokaz_zawartosc(struct osoba* glowa1)
{
    if(glowa1==NULL)
        printf("Lista jest pusta.
");
    else
    {
        int i;
        struct osoba* glowa2;
        printf("| %6s | %16s | %16s | %4s |
","Indeks","Imie","Nazwisko","Rok");
        for(glowa2=glowa1;glowa2!=NULL;glowa2=glowa2->nastepny,i++)
            printf("| %6d | %16s | %16s | %4d |
",i,glowa2->imie,glowa2->nazwisko,glowa2->rok);
    }
    printf("[ENTER] aby powrocic do menu");
    getch();
    return;
}
lukequaint
Użytkownik
Użytkownik
Posty: 219
Rejestracja: 5 maja 2010, o 18:27
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 1 raz
Pomógł: 75 razy

[C] Błąd typu: undefined reference to (funkcja)

Post autor: lukequaint »

Zaimplementować te funkcje, na razie są tylko zadeklarowane.

Możesz zamiast

Kod: Zaznacz cały

void usun_zawartosc(struct osoba** glowa1); 
zapisać

Kod: Zaznacz cały

void usun_zawartosc(struct osoba** glowa1) {}
Transpluton
Użytkownik
Użytkownik
Posty: 125
Rejestracja: 1 gru 2012, o 14:45
Płeć: Mężczyzna
Lokalizacja: Zależna od przestrzeni metrycznej...
Podziękował: 94 razy

[C] Błąd typu: undefined reference to (funkcja)

Post autor: Transpluton »

Problem rozwiązany - serdecznie dziękuję!

Gdybym dopisał instrukcje dla pozostałych tak jak dla pokaz_zawartosc to byłoby w porządku, prawda?
lukequaint
Użytkownik
Użytkownik
Posty: 219
Rejestracja: 5 maja 2010, o 18:27
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 1 raz
Pomógł: 75 razy

[C] Błąd typu: undefined reference to (funkcja)

Post autor: lukequaint »

Dla wszystkich mających jako typ zwracany void. Dla dodaj_poczatek trzeba zwrócić przynajmniej wartość NULL.
ODPOWIEDZ