Błąd LNK2005

0

Witam, mógłby mi ktoś wytłumaczyć ten błąd, szukałem w necie, ale dalej nie rozumiem :(

Error 1 error LNK2005: "struct student * tab" ([email protected]@[email protected]@A) already defined in funkcje.obj D:\c++\programy visual\pdf9\pdf9\glowna.obj
Error 2 error LNK1169: one or more multiply defined symbols found D:\c++\programy visual\pdf9\Debug\pdf9.exe 1 1

glowny.cpp

#include<iostream>
#include<fstream>
#include"student.h"

using namespace std;

void main()
{
    int i;
    int z;
    for (i = 0; i < MAX; i++)
    {
        tab[i].imie[0] = NULL;
        tab[i].adres[0] = NULL;
        tab[i].tel[0] = NULL;
    }

    for (i = 0; i < MAX; i++)
    {
        if (tab[i].imie[0] != NULL) z++;
    }

    int opcja;
    cout << "Co chcesz zrobic?" << endl;
    cin >> opcja;

    while (opcja >= 1 || opcja <= 4)
    {

        switch (opcja)
        {
        case 1: cout << "Wprowadzenie studenta"; 

            if (z != MAX)
            {
                for (i = 0; i < MAX; i++)
                {
                    cin >> tab[i].imie;
                    cin.ignore();
                    cin >> tab[i].adres;
                    cin.ignore();
                    cin >> tab[i].tel;
                    cin.ignore();

                    z++;
                    break;

                }
            }
            else{
                cout << "Brak wolnych miejsc" << endl;
            }

            break;
        case 2: cout << "Usuniecie studenta"; break;
        case 3: cout << "Podglad"; break;
        case 4: cout << "Wyjscie z programu"; break;
        }
    }

}

}

funkcje.cpp

#include<iostream>
#include<fstream>
#include"student.h"

void Load()
{
    int i = 0;
    int r = 0;

    ifstream plik;

    plik.open("baza.txt");
    do{
        if (plik.fail())
        {
            plik.close();
            return;
        }

        if (!plik.eof())
        {
            plik.getline(tab[i].imie, sizeof(tab[i].imie), '#');
            plik.getline(tab[i].adres, sizeof(tab[i].adres), '#');
            plik.getline(tab[i].tel, sizeof(tab[i].tel), '#');
            plik.ignore();
            i++;
            if (i == MAX) break;
        }
    } while (!plik.eof());
    cout << "Rozmiar tablicy: " << i << endl;
    plik.close();
}

void Save()
{
    int i;
    ofstream plik;

    plik.open("baza.txt");
    if (plik.fail())
    {
        plik.close();
        cout << "Wystapil blad pliku!" << endl;
        exit(1);
    }

    for (i = 0; i < MAX; i++)
    if (tab[i].imie[0] != NULL)
    {   
        plik << tab[i].imie << '#'
             << tab[i].adres << '#'
             << tab[i].tel << '#' << endl;      
    }

    plik.close();
}

student.h

#include<iostream>
#include<fstream>

using namespace std;

const int MAX = 256; //max liczba wpisow

struct student{
    char imie[64];
    char adres[64];
    char tel[16];

};

student tab[MAX];

void Save();
void Load();
2

Wyczyść katalog budowania projektu, linker narzeka na glowna.obj, a takiego pliku źródłowego zdajesz się nie mieć - pozostałość po starym kodzie?

0

Faktycznie, nie wiedziałem o tej opcji, ale teraz o coś innego się czepia..
Error 1 error C4700: uninitialized local variable 'z' used d:\c++\programy visual\pdf9\pdf9\glowna.cpp 26 1

Edytowałem i dodałem w glowna.cpp resztę kodu.

for (i = 0; i < MAX; i++)
    {
        if (tab[i].imie[0] != NULL) z++;
    }

Tutaj coś nie pasuje

1

Gdzie ustawiasz wartość początkową z?

3

student tab[MAX]; przenieś do któregokolwiek *.cpp a w student.h daj extern student tab[];

0

To co Delor napisał działa, ale kq również pomogłeś, dzięki :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0