Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  C++ ja #include märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
Bssldr
HV kasutaja

liitunud: 05.12.2009




sõnum 01.07.2010 21:01:14 C++ ja #include vasta tsitaadiga

Kuidas on siis õige #include'ga toimetada? Kas vajalikud failid peaks includema header failis või source failis? Esialgu panin kõik #include käsud header faili, kuid nüüd suuremate projektidega, kus esimene klass kasutab teist ning teine esimest, olen sunnitud isendimuutujate jaoks kasutama pointereid ja forward declaratione. Mis on soovituslik standard? Kas header faili panna kõik forward declarationid ning source faili kõik include käsud?
Kommentaarid: 9 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 8
tagasi üles
vaata kasutaja infot saada privaatsõnum
troglodyte
Kreisi kasutaja
troglodyte

liitunud: 09.08.2002




sõnum 01.07.2010 22:08:11 vasta tsitaadiga

Misasi on "isendimuutja"?
_________________
ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn
Kommentaarid: 34 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 34
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Bssldr
HV kasutaja

liitunud: 05.12.2009




sõnum 01.07.2010 22:59:42 vasta tsitaadiga

troglodyte kirjutas:
Misasi on "isendimuutja"?


Ma kahjuks ei tunne eestikeelseid programmeerimisalaseid termineid piisavalt hästi. Mõtlesin selle all sellist asja nagu 'member variable'. Isendimuutuja peaks tähendama 'member variable't, mis pole staatiline, seevastu klassimuutuja - staatiline.
Kommentaarid: 9 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 8
tagasi üles
vaata kasutaja infot saada privaatsõnum
andresv
HV kasutaja

liitunud: 06.12.2004



Autoriseeritud ID-kaardiga

sõnum 02.07.2010 11:07:25 vasta tsitaadiga

Nu neid klasse mida kasutatakse .h failis included seal. Kõik ülejäänud included .cpp failis.
Siis ka kompileerimine kiirem, kui mõnda #include faili headerit muudad.
Kommentaarid: 5 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 5
tagasi üles
vaata kasutaja infot saada privaatsõnum
Supiplex
HV veteran
Supiplex

liitunud: 11.12.2002




sõnum 02.07.2010 12:17:11 vasta tsitaadiga

Üsna tulikuum soovitus on headeris mitte includida teisi headereid. Kõik include laused mis vähegi lubavad tuleb jätta ".cpp" faili, muidu nakatud kroonilise ropendamisega.

Header failis include lausest ei pääse paaril juhul -
1. nende klasside headerid millest sa pärid,
2. nende klasside headerid mis on sinu memberid (mitte pointeri kaudu vaid päris liikmena, sest siis peab kompilaator neid suutma konstrueerida),
3. äärmise vajaduse korral muu mudru.

Kui sinu klassis on mõni teine klass/struktuur pointeri kaudu esindatud, tuleb muidugi headerisse lisada forward declaration, aga mitte rohkem.

_________________
The young lady had an unusual list,
Linked in part to a structural weakness.
She set no preconditions.
Kommentaarid: 38 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 34
tagasi üles
vaata kasutaja infot saada privaatsõnum
mesilased
HV kasutaja

liitunud: 31.07.2004




sõnum 05.07.2010 12:52:10 vasta tsitaadiga

Olen siiamaani kokku puutunud projektidega kus include-d on .h failis.

Tsyklisest include-misest lahti saamiseks kasuta include-guarde, e.g.


#ifndef __TESTCLASS_H
#define __TESTCLASS_H

#include yourstuff

class TESTCLASS
{
....
};

#endif

Seega inkluuditakse yhte klassi ainult yks kord. Erinevatel firmadel on küll erinevad koodistandardid, niiet oleneb ka sellest et kus t66tad ja mis ylej22nud rahva ootused selle suhtes on.
Kommentaarid: 9 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 8
tagasi üles
vaata kasutaja infot saada privaatsõnum
Bssldr
HV kasutaja

liitunud: 05.12.2009




sõnum 06.07.2010 10:09:47 vasta tsitaadiga

mesilased kirjutas:
Olen siiamaani kokku puutunud projektidega kus include-d on .h failis.

Tsyklisest include-misest lahti saamiseks kasuta include-guarde, e.g.


#ifndef __TESTCLASS_H
#define __TESTCLASS_H

#include yourstuff

class TESTCLASS
{
....
};

#endif

Seega inkluuditakse yhte klassi ainult yks kord. Erinevatel firmadel on küll erinevad koodistandardid, niiet oleneb ka sellest et kus t66tad ja mis ylej22nud rahva ootused selle suhtes on.


Selle asemel kasutan #pragma once.
Kommentaarid: 9 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 8
tagasi üles
vaata kasutaja infot saada privaatsõnum
mesilased
HV kasutaja

liitunud: 31.07.2004




sõnum 06.07.2010 11:54:26 vasta tsitaadiga

Bssldr kirjutas:
mesilased kirjutas:
Olen siiamaani kokku puutunud projektidega kus include-d on .h failis.

Tsyklisest include-misest lahti saamiseks kasuta include-guarde, e.g.


#ifndef __TESTCLASS_H
#define __TESTCLASS_H

#include yourstuff

class TESTCLASS
{
....
};

#endif

Seega inkluuditakse yhte klassi ainult yks kord. Erinevatel firmadel on küll erinevad koodistandardid, niiet oleneb ka sellest et kus t66tad ja mis ylej22nud rahva ootused selle suhtes on.


Selle asemel kasutan #pragma once.


#pragma once ei ole standardiseeritud, aga samas on efektiivne. Vahel soovitatakse koodi "portability" jaoks kasutada seda koos include guardidega.
Kommentaarid: 9 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 8
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  C++ ja #include
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.