Portál AbcLinuxu, 11. května 2025 10:31

Dotaz: moduly a rozhrani

17.4.2008 14:34 Marek Vasin
moduly a rozhrani
Přečteno: 185×
Odpovědět | Admin
Dobry den,

nejdrive priblizim strukturu meho programu. Mam nekolik modulu funkce1.h funkce2.h funkce3.h a funkce4.h a pro ne mam spolecny hlavickovy soubor rozhrani.h. V nem mam definovane struktury, ktere funkce v modulech pouzivaji a take zde jsou hlavicky vsech funkci z modulu. V souborech funkce[1-4].c mam includove rozhrani.h. Pote mam program.c, ktery vyuziva tyto funkce. V nem mame take includovane rozhrani.h. Potud je to ok, vse jde prelozit a funguje.

Nyni chci rekneme tomu z funkce3, ktera je v modulu funkce3.c udelat inline funkci. Jeji telo tedy presunu do souboru rozhrani.h a modul funkce3.c smazu. Nyni kdyz chci program prelozit, dostanu chybu "multiple definition of funkction funkce3". To je pochopitelne, protoze moduly 1, 2 a 4 tuto funkci natahnou take. Pokud pred funkci3 do rozhrani dopisi slovo inline dostanu zase chybu "undefined reference to funkce3 in program.c". To uz si vysvetlit neumim.

Jak tedy docilim toho, aby funkce byla inline, byla definovana v program.c a natahla se pouze jednou? Moc dekuji.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

17.4.2008 18:12 Marek Vasin
Rozbalit Rozbalit vše Re: moduly a rozhrani
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tady jsem primo implementoval jednoduchy program, ktery reprezentuje tento problem: http://qg.ic.cz/a/
18.4.2008 00:05 edois
Rozbalit Rozbalit vše Re: moduly a rozhrani

zaprve: naucte se delat newliny na koncich zdrojaku, prekladac pak mene pyskuje

zadruhe: naucte se za #endif psat co ze to vlastne skoncilo:

#ifndef __HEADER_H
#define __HEADER_H
#endif // __HEADER_H

zatreti: zkuste to prelozit pomoci g++ a ne gcc..

18.4.2008 00:08 edois
Rozbalit Rozbalit vše Re: moduly a rozhrani
a nebo pokud vyslovene potrebujete gcc a ne g++, udelejte ji static:
static inline void funkce1(void)
{
  printf("Ahoj, jsem %s cislo 1\n",STRING);
}
18.4.2008 00:15 edois
Rozbalit Rozbalit vše Re: moduly a rozhrani
a jeste jedna vec - kdyz balite zdrojaky, tak radsi i s adresarem.. clovek si to potom rozbali do home adresare a musi to presouvat..

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.