C: co ma byt v hlavickovych suboroch?

Jan Waclawek konfera na efton.sk
Středa Září 27 10:57:57 CEST 2023


Tak to sme si nerozumeli. Pod "definiciou konstant" som si ja predstavoval
#define KONSTANTA1 12345.

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];

a potom v x.c je definicia aj s inicializaciou:

#include "x.h"

int fnc1(int, int);  // deklaracie funkcii; tato teda uz nemusi byt v .h,
dokonca tu moze byt cela definicia funkcie
int fnc2(int, int);  
int fnc3(int, int);  
int fnc4(int, int);  

fnc_ptr tabulka_funkcii[4] = {fnc1, fnc2, fnc3, fnc4};

V tomto pripade bohuzial nejde deklarovat velkost pola inicializatorom,
musi byt deklarovane explicitne.


wek


----- Original Message ---------------

Subject: Re: C: co ma byt v hlavickovych suboroch?
   From: Jan Waclawek <konfera na efton.sk>
   Date: Wed, 27 Sep 2023 10:34:56 +0200
     To: HW-news <hw-list na list.hw.cz>

>[preposielam]
>
>Ahoj,
>
>to mas pravdu, ze ked ich dam do .h suboru, tak ich uvidia vsetci,
>ktori si ich includuju. Na druhej strane, su ale vsetky deklaracie k
>danemu .c pekne pokope na jednom mieste a lahko sa v tom hlada, ked sa
>programuje. Ale zistil som dnes rano, ze su vynimky. Tabulky s
>vektormi funkcii musia byt az za deklaraciami funkcii. Inak je error
>pri preklade... Aj v .h subore. Mozno to je len specifikum kompilatora
>XC8, ze nevie priradit funkcie, alebo neviem tu tabulku riadne zapisat
>ja.
>
>
>Ked som pisal do konfery, bol som zvedavy na nazory ludi, ktori
>dennodenne v tom C programuju. Ako to pouzivaju oni. Momentalne ma
>zaujima ta tabulka funkcii, ze kam ju dat.
>
>A.
>
>
>Hlavickove subory x.h su nieco ako "export", t.j. veci, ktore z x.c
>chces dat vediet aj do y.c, z.c atd.
>
>T.j.ak su tie konstanty potrebne aj v inych .c tak ich tam daj, inak nie.
>
>wek
>
>
>_______________________________________________
>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