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
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)