C: co ma byt v hlavickovych suboroch?
David Obdrzalek
David.Obdrzalek na mff.cuni.cz
Středa Září 27 23:11:42 CEST 2023
No a nebyly ty warningy něco jiného, než jestli do .h nebo .c?
(tj. myslím tím chybějící dopřednou deklaraci těch funkcí, čili že překladač prskal,
že neví, jak ty funkce budou vypadat, což je ve chvíli překladu sice vlastně jedno,
ale když se mu to neřekne, tak to čistý není. Jestli je něco v .h nebo .c je mu
jedno, to je pro nás lidi, ale souhlasím, že je metodičtější a srozumitelnější, jak
psal wek, aby v .h nebylo nic, co zabírá místo, stejně jako je (dodávám já) prasárna
includovat .c)
A ještě, s dovolením, rád bych upozornil, že je rozdíl mezi definicí a deklarací.
D.O.
On 27 Sep 2023 at 17:17, Jan Waclawek wrote:
> [preposielam]
>
> Ahojte,
>
> ta prva veta je pre mna najdolezitejsia. Kedze tabulka zabera miesto vo
> FLASH, patri do .c-suboru.
>
> Inak cely problem vyriesil kompilator C, ktory pri definicii teda
> deklaracii tabulky smernikov na funkcie (tabulka funkcii) generoval
> warning. Preto som ju musel dat do .c-suboru za
> definicie jednotlivych funkcii. Vsade inde mi to generovalo warningy. Tym
> sa vsetko vyriesilo a do .h-suboru si dam len zakomentovanu definiciu
> tabulky kvoli jasnosti kodu. Velmi pekne dakujem vstkym za objasnenie
> problematiky.
> A.
>
> >>>
> V hlavickovych suboroch nema byt nic, co zabera miesto v pamati. Zostanu
>
> teda veci ako #define, dalej typedef a enum, dalej extern premenne, dalej
> "hlavicky" funkcii (okrem toho #define su to vsetko deklaracie, t.j. nie
> definicie premennych a funkcii).
>
> Takze ak mas tabulku so smernikmi na funkcie, tak ak ju nepotrebujes
> zdielat do ineho .c, tak ju do .h nedavas. Inak v .h ma byt len
> deklaracia, t.j. v x.h bude:
>
> typedef int (*fnc_ptr)(int, int);
> extern fnc_ptr tabulka_funkcii[4];
Další informace o konferenci Hw-list