Includy v C (CCS 550)
Josef Štengl
ok1ced na nagano.cz
Čtvrtek Červenec 17 17:49:09 CEST 2014
Ups, nedorozumění. To je správný zvyk. Měl jsem na mysli kód z hlediska zpracování kompilátorem a orientace v kódu.
Je dobré dodržovat systém, že h soubor by neměl includovat jiný soubor vyjma C souboru, který nemá příslušný C soubor
(neobsahuje deklarace funkcí a slouží k definici globálních typů/maker; a i s tím opatrně - s tím includováním). To proto,
že při odděleném překladu nemůže dojít k rededefinici lokálních typů na které přijde až linker. Lokálních z hlediska
použití, například ke složitějšímu driveru k podobným perifériím.
H soubor nikdy (bez vyjímky) by neměl obsahovat výkonný kód jako funkce, proměnné, struktury a podobně.
Nikdy by se neměl includovat C soubor. Dnes už není k tomu důvod a zbavujeme se možnosti „paralelní“ kompilace -
víceprocesorové systémy jsou dnes běžné a současná 20 let stará moderní koncepce jazyka C od toho vysloveně zrazuje.
Když tyto jednoduchá pravidla dodržíte, můžete bez obav kód používat v klidu i ve vícero aktivních projektech. Jinak se v
tom budete plácat, pokud ten kód ještě budete chtít využít.
ced
Dne 17.7.2014 17:24, Pavel Hudeček napsal(a):
> Jsem zvyklý zdrojáky dělit na různé funkční celky. Dá se s tím pak mnohem lépe pracovat, než když je to všechno v jednom.
>
> To přirovnání s autem mi přijde opačné. Mě to připadá, že jeden velký soubor se dá připodobnit k tomu vyjetí autem až do
> patra, zatímco dělení na části je jako dojet před dům, vystoupit, dojít nahoru, tam se přezout, ... :-)
>
> PH
>
> Od: Josef Štengl <ok1ced na nagano.cz>
>
> Je to proto, že pří editaci je nevidí. Říci přesně proč, to by chtělo vidět zdrojové soubory.
>
> No, přeložit to možná jde, když budete mít kliku. Ale místo téhle příšernosti by už bylo lepší to mít v jednom souboru,
> protože časem narazíte.
>
> Načítat (include) c soubor vůbec, a do h souboru zvláště, je zvrhlost, která by se měla trestat podmíněným zákazem
> programování zostřenou o zákaz užívání piva a žen :-)
>
> Smím se zeptat, co vás k tomu vedlo? Doufám, že jste se neinspiroval lwip kódem, ten je také dost zvrácený. Mimochodem,
> ten CCS bez úprav ani nepřeloží.
>
> Mimochodem, přirovnal bych to k bastlení stylem vrabčí hnízdo nad talířem s obědem, nebo ježdění s autem po chodníku
> až do
> budov a ještě do patra. Taky to jde :-D
>
> Mimochodem kód k nahlédnutí by nebyl?
>
> Dne 17.7.2014 16:13, Pavel Hudeček napsal(a):
> > Tahle část ovšem funguje a není s tím problém.
> > Nakonec jsem do s1.h přidal ještě include s2.c před include s1.c a teď je to k plné spokojenosti.
> >
> > Ale je mi záhadou, jak to s těmi includy funguje. Doteď jsem si myslel, že zdroják s #include se chová úplně
> stejně, jako
> > kdyby na tom místě byl obsah includovaného souboru. Proč to tak není a jak to tedy funguje?
> >
> > Od: Miroslav Mraz <mraz na seznam.cz>
> > Jo, tak to jsem blbě pochopil. Takhle to fakt fungovat nebude.
> >
> > On 07/17/2014 03:53 PM, Jan Waclawek wrote:
> > >> V s1.h jsou nadefinovány nejaké struktury a na konci je includnutý s1.c.
> > > No to je dobra blbost.
>
>
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>
Další informace o konferenci Hw-list