Pomoc u C++

poruka: 10
|
čitano: 2.132
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
8 godina
neaktivan
offline
C++ Pomoc - Header files i inline funkcija

Posto me dugo nije bilo(svakom treba malo odmora), a do sada sto sam pretrazio nisam bas pronasao odgovor na svoje pitanje.

Pa ovako, radi se o C++ i datotekama naprimjer, upload cu vam sliku pa cu ici po njoj i objasniti vam u cemu je stvar i sta mi bas ne ide u glavu. 

https://imgur.com/a/Lw6de7D  (SLIKA)

Kao sto se i vidi na slici ovdje imamo geot.h ; gtijela.cpp ; gtijela.dev i gtijela.exe ... 

Ulazio sam u svaki od ovih fajlova naravno unutra se nalaze kodovi (upitanju su programi za racunanje povrsine, zapremine valjka,kocke...) ali ono sto mene buni jeste zasto imamo npr. geot.h unutra napisane funkcije za racunanje npr. kocke, zatim gtijela.cpp u kojem imamo pozvane funkcije 

extern void Kocka(void);  -- (uopste ne razumijem ovu stvar sa "extern" , a prije toga je ucitana geot.h #include "geot.h"

i nakon svega toga imamo main() funckiju i postavljeni caseovi u kojoj se posebno pozivaju funkcije, koje su napisane vec u gore pomenutim geot.h , gtijela.cpp i ostalim... 

Zasto je to tako ? I koliko sam uspio do sada da shvatim ovo se naziva "funkcijskim prototipom" i ono sto jos zelim da pitam i sto me najvise zanima zar se ovaj citav program nije mogao napisati u jednom kodu npr. int kocka( parametri){ kod}  a dole ispod int main (){ //napraviti case i pozvati funkciju u zavisnosti od korisnika sta odabere } ... 

Takodjer kada sam gledao po github-u, a i vecina open-source programa koji su i nekako komplikovaniji imaju ovako hiljadu datoteka naziv.h, naziv.cpp i onda jedan krajnji .exe file koji pokrece sve to...

Hvala :D

Da li je ovo na neki nacin bolje i sta vi praktikujete ? :)

Poruka je uređivana zadnji put pon 16.7.2018 13:09 (Dr.Atom).
 
0 0 hvala 0
6 godina
offline
Re: Pomoc u C++

Header fajlovi pretežno sadrže klase , njima razbiješ svoj kod i možeš ga koristiti više puta, to se dosta prakticira jer je lakše razumjeti kod

Trust nobody, become the best !
8 godina
neaktivan
offline
Re: Pomoc u C++

Razumio, za ostatak cu googlati. Mr.ddevil 

Jos jedno pitanje kao sto vidis postoji datoteka gtijela.dev i kada se otvori u njoj se nalazi sljedece: 

https://pastebin.com/Ur35WcrH

Da li je ovo obavezno pisati i sta je ovo ustvari ? 

Poruka je uređivana zadnji put ned 15.7.2018 14:38 (Dr.Atom).
6 godina
offline
Re: Pomoc u C++

Ako se dobro sjećam postoji IDE koji takve fajlove radi automatski, nisu potrebni inače

Trust nobody, become the best !
8 godina
neaktivan
offline
Re: Pomoc u C++

Oke, super. Hvala 

8 godina
neaktivan
offline
Re: Pomoc u C++

Moze li malo pojasnjenje oko inline funkcija, ne razumijem sta se tacno desava kada neku funkciju napravimo inline funkcijom... Ne mogu sebi da napravim sliku konkretno u ovom primjeru sta nam one to omogucuju tacno... 

Mr.ddevil  (izvini sto sam dosadan, ali glupo bi bilo da pravim novu temu, valjda ce se neko od forumasa jos pridruziti ovdje u pomoci) 

   #include <iostream.h>

 

5:   inline int Double(int);

6:

7:   int main()

8:   {

9:     int target;

10:

11:    cout << "Enter a number to work with: ";

12:    cin >> target;

13:    cout << "\n";

15:    target = Double(target);

16:    cout << "Target: " << target << endl;

18:    target = Double(target);

19:    cout << "Target: " << target << endl;

22:    target = Double(target);

23:    cout << "Target: " << target << endl;

24:       return 0;

25:  }

27:  int Double(int target)

28:  {

29:    return 2*target;

30: }

6 godina
offline
Re: Pomoc u C++

Ako znaš asembler, preko njega ti mogu puno lakše objasnit, ali evo tekst koji sam našao na eng

 

"In many places we create the functions for small work/functionality which contain simple and less number of executable instruction. Imagine their calling overhead each time they are being called by callers.
When a normal function call instruction is encountered, the program stores the memory address of the instructions immediately following the function call statement, loads the function being called into the memory, copies argument values, jumps to the memory location of the called function, executes the function codes, stores the return value of the function, and then jumps back to the address of the instruction that was saved just before executing the called function. Too much run time overhead.
The C++ inline function provides an alternative. With inline keyword, the compiler replaces the function call statement with the function code itself (process called expansion) and then compiles the entire code. Thus, with inline functions, the compiler does not have to jump to another location to execute the function, and then jump back as the code of the called function is already available to the calling program.
With below pros, cons and performance analysis, you will be able to understand the “why” for inline keyword"

Trust nobody, become the best !
8 godina
neaktivan
offline
Re: Pomoc u C++

Ne nazalost samo osnove pythona pa i C++ (ocito) mada sam sa C++ stigao do klasa, objekata, konstruktora i destruktora, ali sam primjetio da su mi ostale neke supljine kao evo naprimjer ovo sa inline funkcijom, te header fileovima, pa cak nisam do neki dan znao da postoje dvije vrste varijabli(globalne i lokalne varijable), iako idem na IT smjer (srednja skola) bukvalno sam najbolji u razredu sto se tice ovoga(moji tek u drugoj godini treba da rade funkcije), ali kad vidim da ostali prof. dadne najobicniji zadatak sa case-om i npr. kad smo radili for petlju, da se brojevi ispisu unazad i oni to nisu mogli rijesiti, sta drugo da ti kazem, naravno ni da profesor ne zeli da radi naprednije stvari i ne ulazi u srž gradiva, a siguran sam da ima i malo truda od ostalih bi bilo drugacije... 

Ali sta god, ko hoce i nauci, zato evo i gledam po forumima i po svemu sto mi se raspolaze... 

Ma vidi, ako mi mozes objasniti nekako na svoj nacin, probaj, mislim mogu lahko naci na netu naredbe assemblera, samo nemoj neki tezak primjer uzeti... Nadam se da cu skontati... :D Ako ne to googlat cu jos vise 

Mr.ddevil 

Poruka je uređivana zadnji put ned 15.7.2018 16:10 (Dr.Atom).
6 godina
offline
Re: Pomoc u C++

Evo zaboravih odgovoriti, uglavnom inline u assembleru ima manje naredbi, mozemo reci da skrati kod u assembleru, što se tiče ovih "rupa", to ćeš polako učiti, googlati kada vidiš da je nepoznato xD

Trust nobody, become the best !
11 godina
offline
Re: Pomoc u C++

Malo je teze objasnit ako ne znas kako je strukturiran masinski kod i kako se funkcije realiziraju. I ako si vise pocetnik, onda ti ne bi trebalo bit narocito vazno.
Grubo i pojednostavljeno, pozivanje funkcije ima odredjeni 'overhead' - stavit return adresu na stack, pa parametre, instruction pointer prebacit na funkciju, vratit se poslije itd. Za jednostavne funkcije je nekad brze jednostavno ubacit tijelo funkcije tj. njezin kod na mjesto gdje se poziva. Ali ako to trebas napravit na 10 mjesta, onda nije prakticno. Kod inline funkcija, kompajler ce to napravit za tebe, tj. *pokusat ce* na mjestu pozivajuce funkcije ubacit kod.

1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice