problem z kompilacja naglowka dev c++

0
#include <iostream>
#include <cstdlib>
#include "naglowek.h"
#include <string>
using namespace std;


int main()
{
	OSOBA ksiazka[3];
	dodaj(ksiazka[3]);
	wyswietl(ksiazka[3]);
	system("Pause");
}

glowne okno programu

#include <iostream>
#include <cstdlib>
#include <string>
using namespace std;

struct OSOBA
{
	string IMIE;
	string NAZWISKO;
	unsigned NUMER;
};


bool dodaj(OSOBA t);
bool wyswietl (OSOBA t);

naglowek

Wyskakuje mi blad no rule to make target <nazwa.naglowka> stop.
Dlaczego to sie nie chce skompilowac? dodam ze jeszcze jest jeden kod zrodlowy ale w nim nie ma zadnego bledu (tylko przy linkowaniu wyzej wymienionych jest...)

Korzystam z Dev c++

0

Co kombinujesz? Gdzie jest kod naglowek.h i co to ma być ten drugi kod?

Ale zanim coś tam pozmieniasz w kodzie, to zmień środowisko.

0

zaincludowalem naglowek w 3 linijce od gory w pierwszym kodzie. drugi kod to kod naglowka. wiec?

1

Więc naglowek.h powinien wyglądać tak:

#ifndef NAGLOWEK_H_
#define NAGLOWEK_H_

//kod

#endif
0

dzieki za odpowiedz. moglbym sie dowiedziec dlaczego? w od zera do gier kodera troche inaczej to autor opisał, wystarczy zaincludowac i nazwe naglowka wziac w cudzyslow...

0

No tak, ale plik .h trzeba zdefiniować najpierw.

0

I tak to cholerstwo nie chce działać...
wklejam 3 okna

  1. czesc glowna :
 #include <iostream>
#include <cstdlib>
#include <string>
#include "naglowek.h"
using namespace std;


int main()
{
	OSOBA ksiazka[3];
	dodaj(ksiazka[3]);
	wyswietl(ksiazka[3]);
	system("Pause");
}
  1. czesc gdzie sa funkcje etc.
#include <iostream>
#include <string>
#include "naglowek.h"


bool dodaj(OSOBA t[])
{
	for(int i=0;i<3;i++)
	{
		cout<<"Podaj imie : ";
		cin>>t[i].IMIE;
		cout<<endl<<"Podaj nazwisko : ";
		cin>>t[i].NAZWISKO;
		cout<<endl<<"Podaj numer telefonu : ";
		cin>>t[i].NUMER;
	}
}

bool wyswietl(OSOBA t[])
{
	cout << endl;
	for(int i=0;i<3;i++)
	{
		cout<<i<<t[i].IMIE;
		cout<<i<<t[i].NAZWISKO;
		cout<<i<<t[i].NUMER;
		cout<<endl;
	}
} 
  1. naglowek (po modyfikacji)
 #ifndef "naglowek.h"
#define "naglowek.h"
#include <iostream>
#include <cstdlib>
#include <string>
using namespace std;

struct OSOBA
{
	string IMIE;
	string NAZWISKO;
	unsigned NUMER;
};


bool dodaj(OSOBA t);
bool wyswietl (OSOBA t);
#endif

ten sam blad co wczesniej...

0

Problem polega na tym, że Ty nie masz pojęcia co chcesz zrobić.

dodaj(ksiazka[3]);

Co to Twoim zdaniem robi?

bool dodaj(OSOBA t[])
bool dodaj(OSOBA t);

Nie zastanawia Cię fakt, że te dwie funkcje są różne?

Może łaskawie napiszesz co to jest za błąd konkretnie?

0

no rule to make target naglowek.h stop. przeciez pisalem..

a funkcja ta dodaje do tabeli dane osob :F (a dalem typ bool bo... w sumie sam nie wiem czemu).

w czesci glownej wysylam zmienna do funkcji.
w naglowku deklaruje funkcje.
w czesci z funkcjami inicjuje funkcje(w kazdym razie opisuje co ona ma robic)

0

Ale w tym nagłówku, to tak można to deklarować? :

#ifndef "naglowek.h"
#define "naglowek.h"

Napisałem, jak to powinno wyglądać.

Popatrz na deklaracje i późniejsze definicje funkcji dodaj i wyswietl. Jest błąd.

majaczek napisał(a):

w czesci glownej wysylam zmienna do funkcji.
w naglowku deklaruje funkcje.
w czesci z funkcjami inicjuje funkcje(w kazdym razie opisuje co ona ma robic)

No, ale nie rozumiesz, że zadeklarowałeś zmienną typu OSOBA, a później definiujesz funkcję, która przyjmuję TABLICĘ typu OSOBA?

0

zadeklarowalem dokladnie jak napisales(naglowek), ten blad to zapewne chodzi wam o t i t[], wstawiłem gdzie nie było klamer.

no a blad wyskakuje nadal :F

1

No, czyli tak jak mówię, nie masz pojęcia co robisz.

W nagłówku masz tak:

bool dodaj(OSOBA t);

Ta funkcja przyjmuje jako argument obiekt typu OSOBA.

W źródle jest taka definicja funkcji:

bool dodaj(OSOBA t[])

Ta funkcja przyjmuje jako argument tablicę obiektów typu OSOBA. To są inne typy.

Wywołujesz za to taką funkcję:

dodaj(ksiazka[3]);

ksiazka jest tablicą trzech obiektów typu OSOBA. ksiazka[3] to 4 element tej tablicy. Przede wszystkim ten element nie istnieje. Po drugie wywołujesz funkcję, przyjmującą za argument pojedynczy obiekt typu OSOBA, czyli funkcję, która nie istnieje - bo jest tylko deklaracja.

Za to błąd mówi o czymś innym - Dev C++ jest upośledzony. Albo coś popsułeś w projekcie, albo on tak ma. Zainteresuj się czymś, co działa normalnie.

1
majaczek napisał(a):

zadeklarowalem dokladnie jak napisales(naglowek), ten blad to zapewne chodzi wam o t i t[], wstawiłem gdzie nie było klamer.

no a blad wyskakuje nadal :F

Nie zadeklarowałeś tak jak napisałem.

0

dev moze i jest, ale dziala(w sensie juz mi sie kompiluje)... w kazdym razie macie u mnie po plusie czy cośtam co jest obok i podziekowania za pomoc. a od siebie dodam ze juz nie zaloze tak debilnego tematu...

@up : to jak niby zadeklarowałem? w sumie to nie wiem jak w kazdym razie juz dziala.

0

pusty post, problem zazegnany

1

Wtf? Przecież popełniłeś ten sam błąd.

bool ZerujPole(POLE);
bool ZerujPole(POLE tablica[10][10])

Nie widzisz różnicy?

0

juz sobie poradzilem

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