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" (?tab@@3PAUstudent@@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