» »

[C++] #include ?

[C++] #include ?

Grey ::

Živjo,

zanima me, če je kakšna razlika med tem, ali je #include na začetku oz. na koncu datoteke?

Kako je z dedovanjem lastnosti v primeru #include stavkov? Imamo datoteka1.h in datoteka2.h. V datoteka2.h se nahaja #include datoteka1.h. Ali lahko v datoteka1.h uporabljamo funkcije iz datoteka2.h?

Kako se vklopi debuger v Visual Studio, namreč rad bi šel step-by-step čez program in med tem spremljal, kako se spreminjajo vrednosti spremenljivk.

win64 ::

#include si predstavljaj kot, da ti drugo datoteko prilepi v trenutno.
Nekako tako:
prva.h
void start1(){}


druga.h
#include "prva.h"
void start2(){start1();}


To si predstavljaj, da bo pred prevajanjem spremenjeno v:
void start1(){}
void start2(){start1();}


tretja.h
void start2();
#include "prva.h"


To si predstavljaj, da bo pred prevajanjem spremenjeno v:
void start2(){start1();}
void start1(){}


Kar pa je v tem primeru narobe, ker pri klicu funkcije start1, le-ta ne obstaja.

Imej v mislih, da so headerji namenjeni deklaracijam. Sama koda se po navadi zapisuje v c/cpp datoteke.

Glede razhroščevalnika: F5 za začet razhroščevat, F11 za step into, F10 za Step over, vse to imaš v meniju in orodni vrstici

Zgodovina sprememb…

  • spremenil: win64 ()

Grey ::

Kul, hvala za tako hiter odziv. Aha, torej, če je #include na koncu datoteke, se "skompajla" izza datoteke, tako kot je deklarirano in v tem primeru ni moč uporabljati funkcij definiranih v prva.h (...razen,če?).

A obstaja način, da bi iz množice .h in .cpp videl seznam(vrstni red) imen datotek, kako jih compiler razvrsti glede na #include?

Mavrik ::

Pred prevajanjem se požene predprocesor, ki vse #direktive obdela ŠE PRED prevajanjem. Pri "#include" se vsebina datoteke samo skopira na točno tisto mesto in na koncu se požene prevajalnik.

Če boš pognal "gcc -E file.c -o file.i" boš v file.i dobil C/C++ kodo, kjer je bil predprocesor že pognan in so vse "#include", "#define" etc. direktive sprocesirane. Tako si lahko ogledaš kaj se zgodi s tvojo datoteko preden se začne prevajati.
The truth is rarely pure and never simple.

mallard ::

win64 je izjavil:

#include si predstavljaj kot, da ti drugo datoteko prilepi v trenutno.
Imej v mislih, da so headerji namenjeni deklaracijam. Sama koda se po navadi zapisuje v c/cpp datoteke.


Če pa že imaš definicijo funkcije v headerju, jo moraš deklarirat inline.

Zgodovina sprememb…

  • spremenilo: mallard ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[C++]Uporaba strukture v drugi .cpp datoteki

Oddelek: Programiranje
143178 (2881) mallard
»

[VC++, MFC] OnPaint

Oddelek: Programiranje
51032 (999) whatever
»

[c] Enaki datoteki

Oddelek: Programiranje
71052 (912) Spura
»

Iščem program c++

Oddelek: Programiranje
6879 (747) krneki0001
»

[C++] Pridobivaje in brisanje le dolocenih znakov

Oddelek: Programiranje
111361 (1155) Gundolf

Več podobnih tem