Projekt z více souborů a globální proměnná

Bartík Ondřej

Projekt z více souborů a globální proměnná
« kdy: 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ěď.
« Poslední změna: 27. 11. 2010, 15:13:27 od Petr Krčmář »


Program

Re: jednočipový mikroprocesor v C
« Odpověď #1 kdy: 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...

Bartík Ondřej

Re: jednočipový mikroprocesor v C
« Odpověď #2 kdy: 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

Program

Re: jednočipový mikroprocesor v C
« Odpověď #3 kdy: 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.

Bartík Ondřej

Re: jednočipový mikroprocesor v C
« Odpověď #4 kdy: 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'


Re: Projekt z více souborů a globální proměnná
« Odpověď #5 kdy: 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".

Program

Re: Projekt z více souborů a globální proměnná
« Odpověď #6 kdy: 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

Bartík Ondřej

Re: Projekt z více souborů a globální proměnná
« Odpověď #7 kdy: 27. 11. 2010, 16:17:42 »
bomba...stačilo fakt jen přehodit vkladaní těch hlaviček díky moc