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