Warning Implicit declaration of function

Ahoj vsichni.
Vytvoril jsem v ramci sveho cviceni knihovnu pro komunikaci s pameti 24c08.
Pri prekladu se mi ovsem objevi tato chyba


Build started 17.11.2011 at 16:40:30
avr-gcc  -mmcu=attiny13 -Wall -gdwarf-2 -std=gnu99 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT External_Memory.o -MF dep/External_Memory.o.d  -c  ../External_Memory.c
../External_Memory.c: In function 'main':
../External_Memory.c:22:3: warning: implicit declaration of function 'show_data'
avr-gcc -mmcu=attiny13 -Wl,-Map=External_Memory.map External_Memory.o 24c08.o     -o External_Memory.elf
avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature  External_Memory.elf External_Memory.hex
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings -O ihex External_Memory.elf External_Memory.eep || exit 0
avr-objdump -h -S External_Memory.elf > External_Memory.lss

Protoze s ceckem jeste moc neumim nevim co s tim, muzete se nekdo kouknout kde je chyba?
Knihovnu a vse okolo uverejnuji pro volne pouziti pro ostatni.
Programuji v AVRStudiu 4.19 a pouzivam AVR Toolchain
External_Memory.zip (21 KB)

V souboru 24c08.h chybí řádek void show_data(unsigned char addr);
To varování znamená, že v main nemá dostupnou funkci show_data.

Varování "implicit declaration of function ‘show_data’ "
znamená, že funkce show_data() není nikde deklarovaná.

show_data(dev_read_data(500)); Tady voláš funkci show_data() a jako argument jí předáváš obsah eeprom na adrese 500.
Účel toho je celkem nejasný.
Ke všemu ještě funkce show_data() není deklarovaná.

Pokud ti šlo o hodnotu, kterou vrací funkce dev_read_data(), tak tu získáš jednoduše takto

uint8_t data; data = dev_read_data(500);

No jo, jasne, kdyz tu funkci pouzivam, tak bych ji mel mit i v hlavickovem souboru…
Pro funkci pameti vlastne nema vliv, protoze se pouziji jenom ty 2, ta posledni funkce je jenom overeni, ze to funguje…
Achjo, uz si musim odpocinout…

Kto mi poradi co stymto ? avrstudio 4.19 ATmega168

times.o:(.data+0x0): multiple definition of deshod' termostat_D.o:(.data+0x68): first defined here times.o:(.data+0x1): multiple definition of jedhod’
termostat_D.o:(.data+0x69): first defined here
collect2: ld returned 1 exit status
make: *** [Termostat_D.elf] Error 1
Build failed with 1 errors and 0 warnings…

Jemozne ze som prekrocil pocet globalnych premennych ? dakujem

takze mal som tam nieco take…

extern unsigned char dessec,jedsec,desmin,jedmin,deshod,jedhod;
.
.
.

unsigned char dessec,jedsec,desmin,jedmin,deshod=2,jedhod=2;

Máš vícekrát definované jmenované proměnné. Vypadá to na nesprávně sestavený projekt z více souborů.

To som uz rozchodil i ked chovalo sa to zvlastne a to az po nainstalovani 4.19 verzie o tom v inom vlakne.

Cely program je pro komunikaci s 24C08 pameti. Zkousel jsem to na ATTiny13, takze potom jsem si pripojil LED a pomoci funkce show_data jsem si nechal zobrazovat, jestli je to v pameti spravne nebo ne… Mel jsem to jako hlavni program, tak me napadlo z toho udelat knihovnu, at to mam hotove. Pro ucely pouzivani pameti je funkce show_data nepodstatna, nicmene v main() mi zustala, protoze jsem jeste neco dodelaval a timpadem jsem ji zapomnel definovat v hlavickovem souboru…