Re: Globální proměnné v C

Miroslav Šinko sinkomiro na gmail.com
Pondělí Únor 27 17:03:16 CET 2012


No kazdy *.c sa preklada samostatne, o ostatnych nevie nic. #include
"subor" jednoducho pred prekladom vlozi "subor" cely, ako je, takze v
tejto terminologii *.c vidi to, co je v "subore". Vkladany subor moze
byt hocijaky, nikde nie je restrikcia na *.h. Obcas ma zmysel
includovat subory aj s kodom, pripadne definiciami instancii
premennych, ale bezna prax to nie je. Vtedy sa includovane subory
zvyknu pomenovat s inou priponou, napr. *.i.  Header file, s priponou
*.h, by definicie instancii nemal obsahovat. Samozrejme vo vasom
pripade 2/, ak dany header includujete iba do jedneho *.c, preklad, aj
linkovanie sa podari. Ziskavate ale zle navyky, raz sa vam to
vypomsti. Staci, ze budete potrebovat includnut ten header do dalsieho
*.c.

miro

2012/2/27 Miroslav Draxal <evik na volny.cz>:
> Takže u tohoto zůstanu, pro mě zatím dostatečné. Musel jsem si v hlavě
> udělat pořádek, jak C přistupuje j proměnným. (jejich viditelnost v
> ostatních *.c) Míra
>
>
>
> ---Original Message-----
> From: hw-list-bounces na list.hw.cz [mailto:hw-list-bounces na list.hw.cz] On
> Behalf Of Miroslav Šinko
> Sent: Monday, February 27, 2012 4:31 PM
> To: HW-news
> Subject: Re: Globální proměnné v C
>
> 2012/2/27 Miroslav Draxal <evik na volny.cz>:
>> 2/
>>
>> Spi.h
>>
>> typedef struct _SPIout_bity_flag
>>
>>                {             unsigned CanSleep          :1;
>>
>>                               unsigned Set12V              :1;
>>
>>                }_SPIout_bity;
>>
>>
>>
>> _SPIout_bity SPIout_bity;
>
> Toto je zle, v *.h si nemate co definovat instancie premennych
> (SPIout_bity). V *.h si nechajte iba typedef. Instanciu si definujte v *.c,
> kde ju potrebujete. Pravdepodonbe v spi.c. Ak potrebujete pristup k
> instancii struktury aj z inych *.c, do spi.h pridajte extern _SPIout_bity
> SPIout_bity; V tych inych zdrojakoch potom #include "spi.h"
>
> miro
>
>
>>
>>
>> klavesnice.c
>>
>> typedef struct _SPIout_bity_flag
>>
>>                {             unsigned CanSleep          :1;
>>
>>                               unsigned Set12V              :1;
>>
>>                }_SPIout_bity;
>>
>>
>>
>> extern _SPIout_bity SPIout_bity;
>>


Další informace o konferenci Hw-list