Programování uC Microchip v C

Pokud bys z každýho něco potřeboval vkládat, tak to máš špatně sestavený a dřív či později narazíš na problém. Jediný co můžeš v .c souboru potřebovat je jiný .h. Žádné vkládání .c souborů ani výkonný kód v .h nepřipadá v úvahu. Před sebou mám program sestavený z mých 31 souborů (moduly od výrobce mcu nepočítám, to by přidalo dalších 30) a není v tom žádný problém ani zmatek. To by se ale v žádném případě nedalo říct, kdyby byl projekt sestaven blbě. Pravděpodobnost, že by fungoval, by nebyla velká.

V souborech .h je pouze popis toho, co umí soubor .c. Soubor .c se smí v projektu nacházet POUZE 1x (vložení pomocí include vytváří jeho kopie), jinak si připravuješ velice těžko odhalitelné chyby v podobě překrytí proměnných, jejich viditelnosti a podobně.

Když tedy máš např. soubor uart.c, k němu patří soubor uart.h. Do .c poté, co ho vytvoříš, už nijak nevrtáš a taky by z něho nemělo být přímo nic vidět pro ostatní soubory. Vše, co uart.c poskytuje k dispozici musí být popsáno v uart.h.
Ten si poté když je potřeba vložíš do main.c a tomu to stačí. Nepotřebuje vědět, jak funkce pracuje, potřebuje znát pouze její parametry, návratovou hodnotu a jmého. O to, aby to vše nakonec fungovalo se postará linker. A právě linkeru můžeš vytvořit problém vkládáním .c souborů s kódem místo .h obsahujících pouze popis.