problem z kompilacja naglowka dev c++

problem z kompilacja naglowka dev c++
MA
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 12 lat
  • Postów:12
0
Kopiuj
#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

Kopiuj
#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++

allocer
  • Rejestracja:ponad 14 lat
  • Ostatnio:ponad 11 lat
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.


Idiots, idiots everywhere.
MA
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 12 lat
  • Postów:12
0

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

allocer
  • Rejestracja:ponad 14 lat
  • Ostatnio:ponad 11 lat
1

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

Kopiuj
#ifndef NAGLOWEK_H_
#define NAGLOWEK_H_

//kod

#endif

Idiots, idiots everywhere.
edytowany 1x, ostatnio: allocer
MA
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 12 lat
  • Postów:12
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...

edytowany 1x, ostatnio: majaczek
allocer
  • Rejestracja:ponad 14 lat
  • Ostatnio:ponad 11 lat
0

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


Idiots, idiots everywhere.
msm
To pierwsze to okno, to drugie to nagłówek (.h), o co Ci chodzi?
allocer
wczoraj nie widziałem podpisów pod kodami, nie wiem czemu.
msm
Ja musiałem dzisiaj kombinować żeby się domyślić że podpis nad drugim dotyczy pierwszego mimo że są między nimi trzy entery, pewnie też się na to naciąłeś :>. (morał - podpisy nad kodem, albo tuż pod, bez żadnych linijek odstępu)
allocer
no dokładnie o to chodzi :)
MA
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 12 lat
  • Postów:12
0

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

  1. czesc glowna :
Kopiuj
 #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.
Kopiuj
#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)
Kopiuj
 #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...

Endrju
  • Rejestracja:około 22 lata
  • Ostatnio:ponad rok
0

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

Kopiuj
dodaj(ksiazka[3]);

Co to Twoim zdaniem robi?

Kopiuj
bool dodaj(OSOBA t[])
Kopiuj
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?


"(...) otherwise, the behavior is undefined".
MA
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 12 lat
  • Postów:12
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)

edytowany 1x, ostatnio: majaczek
allocer
  • Rejestracja:ponad 14 lat
  • Ostatnio:ponad 11 lat
0

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

Kopiuj
#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?


Idiots, idiots everywhere.
edytowany 2x, ostatnio: allocer
MA
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 12 lat
  • Postów:12
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

edytowany 1x, ostatnio: majaczek
Endrju
  • Rejestracja:około 22 lata
  • Ostatnio:ponad rok
1

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

W nagłówku masz tak:

Kopiuj
bool dodaj(OSOBA t);

Ta funkcja przyjmuje jako argument obiekt typu OSOBA.

W źródle jest taka definicja funkcji:

Kopiuj
bool dodaj(OSOBA t[])

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

Wywołujesz za to taką funkcję:

Kopiuj
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.


"(...) otherwise, the behavior is undefined".
edytowany 1x, ostatnio: Endrju
allocer
  • Rejestracja:ponad 14 lat
  • Ostatnio:ponad 11 lat
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.


Idiots, idiots everywhere.
edytowany 1x, ostatnio: allocer
MA
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 12 lat
  • Postów:12
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.

edytowany 2x, ostatnio: majaczek
MA
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 12 lat
  • Postów:12
0

pusty post, problem zazegnany

edytowany 1x, ostatnio: majaczek
Endrju
  • Rejestracja:około 22 lata
  • Ostatnio:ponad rok
1

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

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

Nie widzisz różnicy?


"(...) otherwise, the behavior is undefined".
MA
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 12 lat
  • Postów:12
0

juz sobie poradzilem

edytowany 2x, ostatnio: majaczek

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.