Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: Bartík Ondřej 27. 11. 2010, 13:52:49

Název: Projekt z více souborů a globální proměnná
Přispěvatel: Bartík Ondřej 27. 11. 2010, 13:52:49
Dobrý den,

mám problém když skládám projekt z více souboru (main.c funkce.c a funkce.h).

Propojení je nejspíš správné, ale nedaří se mi vytvořit globalní proměnou v hlavičkovém souboru funkce.h. Programuji jednočip ATmega2560 kde se používaji datové typy uint8_t uint16_t atp.

propojení je následující:

//main.c

#include "funkce.h"
#include <avr/io.h> // originalni hlavicka primo pro procesor zahrnujici praci s vstupy/vystupy

int main (void){

return 0;
}
//
//funkce.c

#include <avr/io.h>

int test (void)
{

return 0;
}
//
//funkce.h

#ifndef _FUNKCE_H
#define _FUNKCE_H

int test (void);

#endif
//



Uměl by mi někdo poradit ? Děkuji za odpověď.
Název: Re: jednočipový mikroprocesor v C
Přispěvatel: Program 27. 11. 2010, 14:09:55
No tak za 1. ten funkce.c by měl includovat funkce.h.
Globální proměnné se definují v souboru .c a deklarují v .h jako EXTERN. Hlavičkový soubor NESMÍ vytvářet objekty, jinak by tam mohly být 2x...
Název: Re: jednočipový mikroprocesor v C
Přispěvatel: Bartík Ondřej 27. 11. 2010, 14:29:37
aha děkuju a co se týče toho, že ve funkci.c není includovana funkce.h tak to jsem vyčetl z jednoho příkladu, že takhle je to správně a prej proto aby to tam také nebylo 2x
Název: Re: jednočipový mikroprocesor v C
Přispěvatel: Program 27. 11. 2010, 14:39:11
To je více či méně formalita. Jde třeba o to, když funkce.h includuje nějaké jiné .h, tak je zbytečné, aby totéž includovalo i .c . Jinak vše, co může být v .h ve skutečnosti nic nevytváří, hlavička funkce jen říká, že tam něco takového bude a že s tím má překladač počítat.
Název: Re: jednočipový mikroprocesor v C
Přispěvatel: Bartík Ondřej 27. 11. 2010, 14:54:03
nicméně stále to nefunguje...

do hlavickoveho souboru sem jendoduse vlozil     extern uint8_t a; jeste pred deklaraci funkci
a pote znovu do main.c uint8_t a; kde se sni dale pracoval ale proste v tom hlavickovem souboru hlasi    expected '=', ',', ';', 'asm' or '__attribute__' before 'a'
Název: Re: Projekt z více souborů a globální proměnná
Přispěvatel: Aleš Janda 27. 11. 2010, 16:00:15
Vypadá to, že překladač nezná uint8_t – to není zas až tak standardní typ. Zkus dát #include <avr/io.h> před #include "funkce.h".
Název: Re: Projekt z více souborů a globální proměnná
Přispěvatel: Program 27. 11. 2010, 16:04:18
Přesně tak, to je tím, že typ uint8_t neexistuje, asi tam nemáte něco includovanýho, třeba stdint.h
Název: Re: Projekt z více souborů a globální proměnná
Přispěvatel: Bartík Ondřej 27. 11. 2010, 16:17:42
bomba...stačilo fakt jen přehodit vkladaní těch hlaviček díky moc