Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
KralLam2
Založen: 17. 10. 2007 Příspěvky: 4
|
Zaslal: 20. říjen 2007, 08:26:02 Předmět: poradi hlavickovych souboru |
|
|
Ahoj, v jakem poradi se maji vkladat hlavickove soubory? Od nejspecializovanejsiho po nejobecnejsi nebo naopak a proc? Mam pocit, ze jsem cetl, ze poradi od nejspicial. po nejobecn. vede k odstranovani zavislosti ale nejak nevim...
A co si mysite o vkladani includu do includu?
Dekuju za reakci. |
|
Návrat nahoru |
|
 |
Quiark

Založen: 29. 07. 2007 Příspěvky: 816 Bydliště: Chlívek 401
|
Zaslal: 20. říjen 2007, 08:29:30 Předmět: |
|
|
Já to většinou dělám tak, aby mi to fungovalo  _________________ Mám strach |
|
Návrat nahoru |
|
 |
MD

Založen: 29. 07. 2007 Příspěvky: 437 Bydliště: Praha
|
Zaslal: 20. říjen 2007, 09:45:56 Předmět: |
|
|
Includy jsou obcas zlo. Nekdo to dela tak, ze vsechny includy da do jednoho .h souboru a ten pak pouzije ve vsech c/cpp. Vyhoda je v tom, ze je v tom poradek, nevyhoda, ze pokud nekdo zmeni jedno h, je treba prekompilovat vsechny cpp a to trva dloooouho.
Pak se da inkludovat jen to, co je potreba a minimalizovat includy v jinych inkludech. Pohuzel z toho vznikaji dost neprehledne situace. Kdyz jsem tuhle potreboval procistit Krkala a zbavit se cyklickych zavislosti, tak jsem si musel na papir nakreslit graf
Taky jsem slysel o tom, ze to nekdo dava do stdafx.h. Vyhoda: rychla kompilace. Nevyhoda, kdyz nekdo neco nekde zmeni, tak se to v projektu neprojevi, doklud se neda rebuild all.
Jinak na poradi inkludovani systemovych veci imho vetsinou naprosto nezalezi.
Mimochodem u MS kompilatoru je uzitecne pouzivat #pragma once. A u ostatnich #ifdefy, aby se hacko pouzilo v c/cpp jen jednou. _________________ - play with objects - www.krkal.org - |
|
Návrat nahoru |
|
 |
Marek

Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 20. říjen 2007, 16:02:04 Předmět: |
|
|
MD napsal: |
Nevyhoda, kdyz nekdo neco nekde zmeni, tak se to v projektu neprojevi, doklud se neda rebuild all. |
Staci dat pouze Build. Nicmene i tak to stdafx.h urychli kompilaci hooooodne (tim myslim vic nez 2x).
MD napsal: |
Mimochodem u MS kompilatoru je uzitecne pouzivat #pragma once. A u ostatnich #ifdefy, aby se hacko pouzilo v c/cpp jen jednou. |
#pragma once funguje i na G++. _________________ AMD Open Source Graphics Driver Developer |
|
Návrat nahoru |
|
 |
Tomas_Dejmek
Založen: 28. 07. 2007 Příspěvky: 7 Bydliště: Visual studio
|
Zaslal: 20. říjen 2007, 16:45:33 Předmět: |
|
|
Jak jako pořadí includů, na pořádí snad nesejde, důležité je aby nebylo něco mimo svůj includ. Ano určitě je lepší mít includy v jednom headeru a ten pak importovat do source. V source je pak trochu mín kodu co mám při ladění pořád na očích.
V mojí první knížce o C++ se psalo, že si mám includy rovnat podle abecedy abych s v tom lépe vyznal. |
|
Návrat nahoru |
|
 |
BayerMeister
Založen: 02. 10. 2007 Příspěvky: 1 Bydliště: Brandýs nad Labem
|
Zaslal: 20. říjen 2007, 17:17:57 Předmět: |
|
|
Vyplatí se použít stdafx.h (precompiled header) ale jedině tehdy, pokud se v něm nebudou dělat změny (i tranzitivně - i dalších souborech, které includuje on). Proto do něho patří externí includy (třetích stran), jako cizí utility, standardní knihovny (všechny <iostream> nebo <stdio.h> a tak).
Další includy (vlastní) je dobré neagregovat, nebo nejvýše do úzkých skupin, kde např. nedává smysl include jednoho bez druhého. Příklad: "mojeFonty.h" a "strukturaGUI.h" dam oboje do "GUI.h", protože jistě nikde nepoužiji jedno bez druhého.
Pořadí includů v .cpp: Nejprve standardní includy (nebo pouze stdafx.h, pokud ho používám) a pak co potřebuji v pořadí, jaké dává smysl (závislejší níže)... _________________ Richard G. Bayer |
|
Návrat nahoru |
|
 |
Chjoodge

Založen: 30. 07. 2007 Příspěvky: 145
|
Zaslal: 21. říjen 2007, 15:36:27 Předmět: Re: poradi hlavickovych souboru |
|
|
KralLam2 napsal: |
Ahoj, v jakem poradi se maji vkladat hlavickove soubory? |
Dobré je do každého souboru includovat jenom to, co potřebuješ, tzn. do každého headeru includovat headery tříd, které v tom daném headeru používáš - máš pak po změnách rychlejší kompilaci a jako bonus z toho pěkně vidíš, co je na čem jak závislé
O pořadí ti pak většinou moc nejde, protože když něco includuješ, tak to má samo v sobě include na věci, které to potřebuje. |
|
Návrat nahoru |
|
 |
Ash
Založen: 30. 07. 2007 Příspěvky: 13 Bydliště: Bratislava
|
Zaslal: 21. říjen 2007, 20:30:31 Předmět: |
|
|
Vo všeobecnosti by na poradí nemalo záležať, ale existuje pár situácií, kedy je poradie dôležité. Niektoré deklarácie a definície treba mať uvedené na začiatku (napr. define WIN32_LEAN_AND_MEAN a podobné deklarácie potrebné pre štandardné headrové súbory) a niektoré treba mať vždy na konci (napr. definície operátorov new a delete pre identifikáciu únikov pamäte - ak by to bolo pred štandardnými headermi, tak by sa zbláznili).
A osobne preferujem poradie includov od štandardných k špeciálnym (týkajúcim sa toho konkrétneho projektu). |
|
Návrat nahoru |
|
 |
|