AVRGCC i ja raz jeszcze... ;-)
Masz problem? Zapytaj na forum elektroda.pl
From: Milosz Skowyra <mewashek_at_nospam_wp.pl>
Subject: AVRGCC i ja raz jeszcze... ;-)
Date: Wed, 12 May 2004 12:43:45 +0200
Ehlo.
Na wstepie... potrzebne do kombajnu marchewkowego ;-)
Mam strukture:
typedef struct
{
int adres[6];
unsigned char preheat[6];
unsigned char limit[6];
unsigned char character[6];
unsigned char nazwa[16] ;
}eeprom_set;
Struktura owa jest powiazana w pewien sposob z wielopoziomowym menu. W
pewnym miejscu programu tzn. tam gdzie nastepuje wyswietlenie konkretnej
wartosci ze struktury, nastepuje ustawienie wskaznika: int *edit_buffer
na dana za pomoca: edit_pointer=&ustawienia.adres[mep2-2]; W zupelnie
innej czesci programu musze miec mozliwosc edytowania wartosci na ktora
wskazuje edit_buffer. Dokonuje tego za pomoca np. (*edit_pointer)++;
Teraz problem: Jak widac struktura ma 2 typy danych inty i chary. Tak
byc musi, jak zmienie char-y na inty to w EEPROM-ie mi sie nie pomiesci,
adres musi byc intem. Procedura edycji danych musi byc jedna i edytowac
zmienne int i char. Jak to zrobic zeby wskaznik int *edit_buffer mogl
wsazywac obiekty char. Bo wskazywac to potrafi
edit_pointer=(int*)(&ustawienia.limit[mep2-2]); ale zapisuje dana jako
inta (zajmuje 2 bajty i slusznie).
Co powinienem sie dowiedziec ?? I czy w tym przypadku nie mam znow
problemu ze wskaznikami ?? Poczytalem K&R ale nie ma tam zasadniczo
informacji jak postapic w tym przypadku. Teoretycznie moglbym
wykorzystac wskaznik typu void i przepisywac go do wskaznika albo typu
char albo typu int. Ale moze da sie bardziej elegancko. Moglbym tez niby
przeciazyc funkcje, ale wolalbym miec dwa w jednym... da sie tak ??
--
Regards. Przy odpowiedzi usun "." przed "net" z adresu!!!
|-----------------------------------------------------|
| Milosz Skowyra GSM Mobile +48 600 95 35 72 |
| miloszek_at_nospam_fido.net.org.pl 2:484/2.47 on fidonet |
|-----------------------------------------------------|
========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: "Andy" <anokWYTNIJ_at_nospam_ceti.pl>
Subject: Re: AVRGCC i ja raz jeszcze... ;-)
Date: Wed, 12 May 2004 14:17:48 +0200
Użytkownik "Milosz Skowyra" <mewashek_at_nospam_wp.pl> napisał w wiadomości
news:40A1FFE1.ECFCA803_at_nospam_wp.pl...
Ehlo.
Na wstepie... potrzebne do kombajnu marchewkowego ;-)
Mam strukture:
typedef struct
{
int adres[6];
unsigned char preheat[6];
unsigned char limit[6];
unsigned char character[6];
unsigned char nazwa[16] ;
}eeprom_set;
Struktura owa jest powiazana w pewien sposob z wielopoziomowym menu. W
pewnym miejscu programu tzn. tam gdzie nastepuje wyswietlenie konkretnej
wartosci ze struktury, nastepuje ustawienie wskaznika: int *edit_buffer
na dana za pomoca: edit_pointer=&ustawienia.adres[mep2-2]; W zupelnie
innej czesci programu musze miec mozliwosc edytowania wartosci na ktora
wskazuje edit_buffer. Dokonuje tego za pomoca np. (*edit_pointer)++;
Teraz problem: Jak widac struktura ma 2 typy danych inty i chary. Tak
byc musi, jak zmienie char-y na inty to w EEPROM-ie mi sie nie pomiesci,
adres musi byc intem. Procedura edycji danych musi byc jedna i edytowac
zmienne int i char. Jak to zrobic zeby wskaznik int *edit_buffer mogl
wsazywac obiekty char. Bo wskazywac to potrafi
edit_pointer=(int*)(&ustawienia.limit[mep2-2]); ale zapisuje dana jako
inta (zajmuje 2 bajty i slusznie).
a cast nie dziala ?
*(char*) edit_pointer = jakas_dana;
chyba zapisze char pod ten wskaznik
--
Andrzej
========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: Milosz Skowyra <mewashek_at_nospam_wp.pl>
Subject: Re: AVRGCC i ja raz jeszcze... ;-)
Date: Wed, 12 May 2004 20:18:50 +0200
Andy wrote:
a cast nie dziala ?
Proponujesz reinterpret_cast<char *>&edit_pointer ?? Cos nie chce... ;-(
*(char*) edit_pointer = jakas_dana;
chyba zapisze char pod ten wskaznik
Nie sprawdzalem, ale to nie w ta strone ma dzialac... to znaczy troche.
Musialbym najpierw wiedziec ze wskaznik jest na char a nie na int.
--
Regards. Przy odpowiedzi usun "." przed "net" z adresu!!!
|-----------------------------------------------------|
| Milosz Skowyra GSM Mobile +48 600 95 35 72 |
| miloszek_at_nospam_fido.net.org.pl 2:484/2.47 on fidonet |
|-----------------------------------------------------|
========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!pwr.wroc.pl!panorama.wcss.wroc.pl!not-for-mai
From: "Piotr Wyderski" <wyderskiREMOVE_at_nospam_ii.uni.wroc.pl>
Subject: Re: AVRGCC i ja raz jeszcze... ;-)
Date: Wed, 12 May 2004 21:40:01 +0200
Milosz Skowyra wrote:
Proponujesz reinterpret_cast<char *>&edit_pointer ?? Cos nie chce... ;-(
Bo:
a) to jest konstrukcja z C++, a nie z C, w ktorym, jak sie domyslam,
piszesz. :-)
b) paramer podaje sie w nawiasach: reinterpret_cast<char *>(&edit_pointer).
W C piszesz zwyczajnie: (char*) &edit_pointer.
Pozdrawiam
Piotr Wyderski
========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: Milosz Skowyra <mewashek_at_nospam_wp.pl>
Subject: Re: AVRGCC i ja raz jeszcze... ;-)
Date: Wed, 12 May 2004 23:19:21 +0200
Piotr Wyderski wrote:
Proponujesz reinterpret_cast<char *>&edit_pointer ?? Cos nie chce... ;-(
Bo:
a) to jest konstrukcja z C++, a nie z C, w ktorym, jak sie domyslam,
piszesz. :-)
b) paramer podaje sie w nawiasach: reinterpret_cast<char *>(&edit_pointer).
W C piszesz zwyczajnie: (char*) &edit_pointer.
Jasne. Jak rozumiem przez C generalnie rozumie sie ANSI C z pozniejszymi
zmianami typu C99 ??
A CPP to pochodna C, rozniaca sie... no wlasnie... czym ??
--
Regards. Przy odpowiedzi usun "." przed "net" z adresu!!!
|-----------------------------------------------------|
| Milosz Skowyra GSM Mobile +48 600 95 35 72 |
| miloszek_at_nospam_fido.net.org.pl 2:484/2.47 on fidonet |
|-----------------------------------------------------|
========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!newsfeed.tpinternet.pl!news.dialog.net.pl!not-for-mai
From: "Piotr Wyderski" <piotr.wyderski_at_nospam_wp.pl>
Subject: Re: AVRGCC i ja raz jeszcze... ;-)
Date: Fri, 14 May 2004 01:41:14 +0200
Milosz Skowyra wrote:
Jasne. Jak rozumiem przez C generalnie rozumie sie ANSI C z pozniejszymi
zmianami typu C99 ??
Najrozsadniej przyjac taka interpretacje.
A CPP to pochodna C, rozniaca sie... no wlasnie... czym ??
C++ to zupelnie osobny jezyk, majacy z dzisiejszym C tyle samo
wspolnego, co czlowiek z szympansem: wspolnego przodka. :->
Pozdrawiam
Piotr Wyderski
========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mai
From: J.F. <jfox_nospam_at_nospam_poczta.onet.pl>
Subject: Re: AVRGCC i ja raz jeszcze... ;-)
Date: Wed, 12 May 2004 15:18:59 +0200
On Wed, 12 May 2004 12:43:45 +0200, Milosz Skowyra wrote:
typedef struct
{
int adres[6];
unsigned char preheat[6];
unsigned char limit[6];
unsigned char character[6];
unsigned char nazwa[16] ;
}eeprom_set;
W pewnym miejscu programu tzn. tam gdzie nastepuje wyswietlenie konkretnej
wartosci ze struktury, nastepuje ustawienie wskaznika: int *edit_buffer
na dana za pomoca: edit_pointer=&ustawienia.adres[mep2-2]; W zupelnie
innej czesci programu musze miec mozliwosc edytowania wartosci na ktora
wskazuje edit_buffer. Dokonuje tego za pomoca np. (*edit_pointer)++;
Teraz problem: Jak widac struktura ma 2 typy danych inty i chary. Tak
byc musi, jak zmienie char-y na inty to w EEPROM-ie mi sie nie pomiesci,
adres musi byc intem. Procedura edycji danych musi byc jedna i edytowac
zmienne int i char. Jak to zrobic zeby wskaznik int *edit_buffer mogl
wsazywac obiekty char. Bo wskazywac to potrafi
edit_pointer=(int*)(&ustawienia.limit[mep2-2]); ale zapisuje dana jako
inta (zajmuje 2 bajty i slusznie).
Ty cos Miloszu znowu przekombinowujesz. ja nie bardzo rozumiem co
chcesz osiagnac ...
Jesli jedna procedura ma poprawiac int i char ... to nie moze byc
"jedna" - bo jak ma sie zorientowac jaki typ ma poprawic ?
Poprawnie to bedzie cos takiego:
eeprom_set *edit_p;
edit_p=&ustawienia ; //lub =&ustawienia[0]; czy =ustawienia jesli
tablica
wyswietl(&(edit_p->adres[mep2-2]));
edytuj_inttab(edit_p->adres);
edytuj_chartab(edit_p->preheat);
mozesz oczywiscie zmiescic w jednej, na zasadzie
edytuj(void *p, char typ)
{
....
if (typ==1) //char
*(char*)p=... ;
else
*(int*)p = ....;
}
Jesli ci sie nie podoba .. w zasadzie do tego sluza obiekty,
ale nie polecam :-)
Teoretycznie moglbym
wykorzystac wskaznik typu void i przepisywac go do wskaznika albo typu
char albo typu int.
"zmienic typ" mozesz tak jak wyzej. void nie jest do tego potrzebny
- to tylko dla elegancji i podkreslenia ze ten typ dziwny jest.
Mogloby byc tak:
edytuj(int *p, char typ)
{
....
if (typ==1) //char
*(char*)p=... ;
else
*p = ....;
}
Tylko wtedy kompilator bedzie cie ostrzegal przy wywolaniu
edytuj(edit_p->preheat+3, 1)
J.
========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: Milosz Skowyra <mewashek_at_nospam_wp.pl>
Subject: Re: AVRGCC i ja raz jeszcze... ;-)
Date: Wed, 12 May 2004 20:34:15 +0200
"J.F." wrote:
[...]
edit_pointer=(int*)(&ustawienia.limit[mep2-2]); ale zapisuje dana jako
inta (zajmuje 2 bajty i slusznie).
Ty cos Miloszu znowu przekombinowujesz. ja nie bardzo rozumiem co
chcesz osiagnac ...
Hint. Kiedys w asmie stworzylem sobie taki uklad menu, ktory dzialal
"sam z siebie" tzn. wystarczylo dopisac pozycje menu w definicji menu i
reakcje na enter. Teraz chce osiagnac cos podobnego. Ale juz widze ze
cos nie bardzo.
Jesli jedna procedura ma poprawiac int i char ... to nie moze byc
"jedna" - bo jak ma sie zorientowac jaki typ ma poprawic ?
No wlasnie, myslalem ze za malo wiem na temat C i dlatego zapytalem.
[...]
Jesli ci sie nie podoba .. w zasadzie do tego sluza obiekty,
ale nie polecam :-)
Odpuszczam... kilkadziesiat bajtow to nie majatek. Za to przejrzystosc
spora.
"zmienic typ" mozesz tak jak wyzej. void nie jest do tego potrzebny
- to tylko dla elegancji i podkreslenia ze ten typ dziwny jest.
Mogloby byc tak:
[...]
Tylko wtedy kompilator bedzie cie ostrzegal przy wywolaniu
edytuj(edit_p->preheat+3, 1)
Spoko, poradzilem sobie dwoma funkcjami, osobnymi dla typow. Jak mi
pamieci zacznie brakowac to moze wtedy zaczne kombinowac. A propo's
kompilatora i warninga... to mam jeszcze male 2 pytanka.
Dlaczego zapis:
eeprom_set temp;
memcpy(&temp,&ustawienia,sizeof(eeprom_set));
wywoluje warninga:
menu.c:189: warning: implicit declaration of function `memcpy'
ustawienia tez sa typu eeprom_set. Identyczna definicja kilkanascie
linijek nizej w innej funkcji nie wywoluje tego warninga. Nie rozumiem
dlaczego kompilator uwaza ze ta deklaracja jest "ukryta" czy
"bezgraniczna".
I kolejny problem warninga podczas zapisywania do eepromu.
eeprom_write_block(&ustawienia,&eeust[setting_number],sizeof(ustawienia));
menu.c:215: warning: passing arg 2 of `eeprom_write_block' discards
qualifiers from pointer target type
gdzie: eeprom_set ustawienia;
static const eeprom_set eeust[3] _attribute_((section(".eeprom"))) ={
{{1,2,3,4,5,6},{0,0,0,0,0,0},{255,255,255,255,255,255},{0,1,2,3,1,2},"1
zestaw nastaw "},
{{2,3,4,5,6,7},{0,0,0,0,0,0},{255,255,255,255,255,255},{0,0,0,0,0,0},"2
zestaw nastaw "},
{{3,4,5,6,7,8},{0,0,0,0,0,0},{255,255,255,255,255,255},{0,0,0,0,0,0},"3
zestaw nastaw "}};
Rozumiem ze nie podoba mu sie to ze adres dostarczam w malostrawnej dla
niego postaci. Czy tak ??
--
Regards. Przy odpowiedzi usun "." przed "net" z adresu!!!
|-----------------------------------------------------|
| Milosz Skowyra GSM Mobile +48 600 95 35 72 |
| miloszek_at_nospam_fido.net.org.pl 2:484/2.47 on fidonet |
|-----------------------------------------------------|
========
Path: news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!not-for-mai
From: J.F. <jfox_nospam_at_nospam_poczta.onet.pl>
Subject: Re: AVRGCC i ja raz jeszcze... ;-)
Date: Thu, 13 May 2004 02:01:15 +0200
On Wed, 12 May 2004 20:34:15 +0200, Milosz Skowyra wrote:
Dlaczego zapis:
eeprom_set temp;
memcpy(&temp,&ustawienia,sizeof(eeprom_set));
wywoluje warninga:
menu.c:189: warning: implicit declaration of function `memcpy'
zapomniales string.h zaincludowac.
Kompilator sam sobie wtedy deklaruje funkcje memcpy - tzn
domysla sie parametrow.
Identyczna definicja kilkanascie
linijek nizej w innej funkcji nie wywoluje tego warninga.
Bo teraz memcpy juz jest zdefiniowana :-)
eeprom_write_block(&ustawienia,&eeust[setting_number],sizeof(ustawienia));
menu.c:215: warning: passing arg 2 of `eeprom_write_block' discards
qualifiers from pointer target type
gdzie: eeprom_set ustawienia;
static const eeprom_set eeust[3] _attribute_((section(".eeprom"))) ={
{{1,2,3,4,5,6},{0,0,0,0,0,0},{255,255,255,255,255,255},{0,1,2,3,1,2},"1
zestaw nastaw "},
Rozumiem ze nie podoba mu sie to ze adres dostarczam w malostrawnej dla
niego postaci. Czy tak ??
Nie, odrzuca jakis niuans w typie .. moze mu sie nie podoba ze adres
tablicy typu const przekazujesz w miejsce parametru ktory const nie ma
.. czyli potencjalny problem uzmienniania stalej ?
J.
========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!fu-berlin.de!newsfeed01.sul.t-online.de!t-online.de!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: Milosz Skowyra <mewashek_at_nospam_wp.pl>
Subject: Re: AVRGCC i ja raz jeszcze... ;-)
Date: Thu, 13 May 2004 11:57:29 +0200
"J.F." wrote:
menu.c:189: warning: implicit declaration of function `memcpy'
zapomniales string.h zaincludowac.
Jasne... ;-( A propos gdzie mozna znalezc jakis opis gdzie siedzi jaka
funkcja ?? Pomijajac te dostepne w plikach *.h ktore ewentualnie mozna
znalezc recznie.
Kompilator sam sobie wtedy deklaruje funkcje memcpy - tzn
domysla sie parametrow.
W sumie madre i glupie toto... wolalbym dostac error niz warninga ;-(
menu.c:215: warning: passing arg 2 of `eeprom_write_block' discards
qualifiers from pointer target type
Nie, odrzuca jakis niuans w typie .. moze mu sie nie podoba ze adres
tablicy typu const przekazujesz w miejsce parametru ktory const nie ma
.. czyli potencjalny problem uzmienniania stalej ?
Jasne. Poszukam, popatrze... ;-)
--
Regards. Przy odpowiedzi usun "." przed "net" z adresu!!!
|-----------------------------------------------------|
| Milosz Skowyra GSM Mobile +48 600 95 35 72 |
| miloszek_at_nospam_fido.net.org.pl 2:484/2.47 on fidonet |
|-----------------------------------------------------|
========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!news.onet.pl!not-for-mai
From: J.F. <jfox_nospam_at_nospam_poczta.onet.pl>
Subject: Re: AVRGCC i ja raz jeszcze... ;-)
Date: Thu, 13 May 2004 13:15:18 +0200
On Thu, 13 May 2004 11:57:29 +0200, Milosz Skowyra wrote:
"J.F." wrote:
zapomniales string.h zaincludowac.
Jasne... ;-( A propos gdzie mozna znalezc jakis opis gdzie siedzi jaka
funkcja ?? Pomijajac te dostepne w plikach *.h ktore ewentualnie mozna
znalezc recznie.
Siedziec to one siedza w bibliotece. Powinienes gdzies zrodla nawet
znalezc.
Kompilator sam sobie wtedy deklaruje funkcje memcpy - tzn
domysla sie parametrow.
W sumie madre i glupie toto... wolalbym dostac error niz warninga ;-(
Zaszlosc historyczna - kiedys C tego w ogole nie sprawdzal, tylko
wywolywal jak kazales.
J.
========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: Milosz Skowyra <mewashek_at_nospam_wp.pl>
Subject: Re: AVRGCC i ja raz jeszcze... ;-)
Date: Thu, 13 May 2004 13:21:46 +0200
"J.F." wrote:
Jasne... ;-( A propos gdzie mozna znalezc jakis opis gdzie siedzi jaka
funkcja ?? Pomijajac te dostepne w plikach *.h ktore ewentualnie mozna
znalezc recznie.
Siedziec to one siedza w bibliotece. Powinienes gdzies zrodla nawet
znalezc.
Jasne.
Kompilator sam sobie wtedy deklaruje funkcje memcpy - tzn
domysla sie parametrow.
W sumie madre i glupie toto... wolalbym dostac error niz warninga ;-(
Zaszlosc historyczna - kiedys C tego w ogole nie sprawdzal, tylko
wywolywal jak kazales.
To moze niech juz ten warning zostanie ;-)))
--
Regards. Przy odpowiedzi usun "." przed "net" z adresu!!!
|-----------------------------------------------------|
| Milosz Skowyra GSM Mobile +48 600 95 35 72 |
| miloszek_at_nospam_fido.net.org.pl 2:484/2.47 on fidonet |
|-----------------------------------------------------|
========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: Jurek Szczesiul <jerzy.szczesiul_at_nospam_wycin.ep.com.pl>
Subject: Re: AVRGCC i ja raz jeszcze... ;-)
Date: Thu, 13 May 2004 15:35:05 +0200
Thu, 13 May 2004 13:21:46 +0200, na pl.misc.elektronika, Milosz Skowyra
napisał(a):
Siedziec to one siedza w bibliotece. Powinienes gdzies zrodla nawet
znalezc.
Jasne.
Jest jeszcze narzedzie avr-ar, ktorym mozna obejrzec zawartosc
biblioteki*.a
Inna sprawa, ze w avr-libc nie ma wielkiego asortymentu - wiekszosc siedzi
w podstawowej libc.a, matematyka w libm.a - i jeszcze jest pare mniejszych
na rozne wersje vprintf.
W sumie madre i glupie toto... wolalbym dostac error niz warninga ;-(
To moze niech juz ten warning zostanie ;-)))
Jeszcze mozna sprobowac z opcja -Werror / powoduje potraktowanie warninga
jako error ( kompilacja zostaje zatrzymana, ale komunikat chyba niestety
sie nie zmienia ).
--
Pozdrowienia
Jurek Szczesiul
========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: Milosz Skowyra <mewashek_at_nospam_wp.pl>
Subject: Re: AVRGCC i ja raz jeszcze... ;-)
Date: Thu, 13 May 2004 18:06:19 +0200
Jurek Szczesiul wrote:
Siedziec to one siedza w bibliotece. Powinienes gdzies zrodla nawet
znalezc.
Jest jeszcze narzedzie avr-ar, ktorym mozna obejrzec zawartosc
biblioteki*.a
Fakt. Dzieki.
Inna sprawa, ze w avr-libc nie ma wielkiego asortymentu - wiekszosc siedzi
w podstawowej libc.a, matematyka w libm.a - i jeszcze jest pare mniejszych
na rozne wersje vprintf.
Ale zawsze mozna je sobie popodgladac ;-)
W sumie madre i glupie toto... wolalbym dostac error niz warninga ;-(
To moze niech juz ten warning zostanie ;-)))
Jeszcze mozna sprobowac z opcja -Werror / powoduje potraktowanie warninga
jako error ( kompilacja zostaje zatrzymana, ale komunikat chyba niestety
sie nie zmienia ).
O dzieki. Poprobuje.
--
Regards. Przy odpowiedzi usun "." przed "net" z adresu!!!
|-----------------------------------------------------|
| Milosz Skowyra GSM Mobile +48 600 95 35 72 |
| miloszek_at_nospam_fido.net.org.pl 2:484/2.47 on fidonet |
|-----------------------------------------------------|
========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!wsisiz.edu.pl!news.atman.pl!not-for-mai
From: Krzysztof Rudnik <rudnik_at_nospam_kki.net.pl>
Subject: Re: AVRGCC i ja raz jeszcze... ;-)
Date: Thu, 13 May 2004 16:46:19 +0200
Milosz Skowyra wrote:
"J.F." wrote:
menu.c:189: warning: implicit declaration of function `memcpy'
zapomniales string.h zaincludowac.
Jasne... ;-( A propos gdzie mozna znalezc jakis opis gdzie siedzi jaka
funkcja ?? Pomijajac te dostepne w plikach *.h ktore ewentualnie mozna
znalezc recznie.
Kompilator sam sobie wtedy deklaruje funkcje memcpy - tzn
domysla sie parametrow.
W sumie madre i glupie toto... wolalbym dostac error niz warninga ;-(
Zmienic rozszerzenie pliku na .cpp
Krzysiek Rudnik
========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.nask.pl!news-stoc.telia.net!217.209.241.210.MISMATCH!news-stod.telia.net!telia.net!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: Milosz Skowyra <mewashek_at_nospam_wp.pl>
Subject: Re: AVRGCC i ja raz jeszcze... ;-)
Date: Thu, 13 May 2004 18:07:06 +0200
Krzysztof Rudnik wrote:
W sumie madre i glupie toto... wolalbym dostac error niz warninga ;-(
Zmienic rozszerzenie pliku na .cpp
No i jeszcze zmienic makefile, ale to kiepski pomysl byl... program z
samych bledow sie sklada ;-)))
--
Regards. Przy odpowiedzi usun "." przed "net" z adresu!!!
|-----------------------------------------------------|
| Milosz Skowyra GSM Mobile +48 600 95 35 72 |
| miloszek_at_nospam_fido.net.org.pl 2:484/2.47 on fidonet |
|-----------------------------------------------------|
========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!newsfeed.tpinternet.pl!news.dialog.net.pl!not-for-mai
From: "Piotr Wyderski" <piotr.wyderski_at_nospam_wp.pl>
Subject: Re: AVRGCC i ja raz jeszcze... ;-)
Date: Fri, 14 May 2004 01:50:15 +0200
Milosz Skowyra wrote:
wywoluje warninga:
menu.c:189: warning: implicit declaration of function `memcpy'
Kazales mu uzyc nieznanej funkcji. :-) #include
opowieniego pliku zalatwi sprawe.
eeprom_write_block(&ustawienia,&eeust[setting_number],sizeof(ustawienia));
menu.c:215: warning: passing arg 2 of `eeprom_write_block' discards
qualifiers from pointer target type
Pewnie drugim argumentem tej funkcji jest cos*, a nie const cos*,
a parametr jest typu const cos*.
gdzie: eeprom_set ustawienia;
static const eeprom_set eeust[3] _attribute_((section(".eeprom"))) ={
{{1,2,3,4,5,6},{0,0,0,0,0,0},{255,255,255,255,255,255},{0,1,2,3,1,2},"1
zestaw nastaw "},
{{2,3,4,5,6,7},{0,0,0,0,0,0},{255,255,255,255,255,255},{0,0,0,0,0,0},"2
zestaw nastaw "},
{{3,4,5,6,7,8},{0,0,0,0,0,0},{255,255,255,255,255,255},{0,0,0,0,0,0},"3
zestaw nastaw "}};
Rozumiem ze nie podoba mu sie to ze adres dostarczam w malostrawnej dla
niego postaci. Czy tak ??
Nie, zwroc uwage na const w drugiej linijce.
Dajesz procedurze obiekt tylko odczytywalny
jako taki, ktory mozna rowniez zapisac, wiec
kompilator popadl w zadume i urodzil warninga. :-)
Pozdrawiam
Piotr Wyderski
========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: Milosz Skowyra <mewashek_at_nospam_wp.pl>
Subject: Re: AVRGCC i ja raz jeszcze... ;-)
Date: Fri, 14 May 2004 11:53:22 +0200
Piotr Wyderski wrote:
Nie, zwroc uwage na const w drugiej linijce.
Dajesz procedurze obiekt tylko odczytywalny
jako taki, ktory mozna rowniez zapisac, wiec
kompilator popadl w zadume i urodzil warninga. :-)
Nie ma to jak solidne wyjasnienie ;-) Dzieki. Probowalem wczoraj troche
upic kompilator, ale sie nie dal ;-(
--
Regards. Przy odpowiedzi usun "." przed "net" z adresu!!!
|-----------------------------------------------------|
| Milosz Skowyra GSM Mobile +48 600 95 35 72 |
| miloszek_at_nospam_fido.net.org.pl 2:484/2.47 on fidonet |
|-----------------------------------------------------|
========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!newsfeed.tpinternet.pl!news.dialog.net.pl!not-for-mai
From: "Piotr Wyderski" <piotr.wyderski_at_nospam_wp.pl>
Subject: Re: AVRGCC i ja raz jeszcze... ;-)
Date: Fri, 14 May 2004 13:11:44 +0200
Milosz Skowyra wrote:
Probowalem wczoraj troche
upic kompilator, ale sie nie dal ;-(
To bardzo dobrze o nim swiadczy. :-) Milosz, nie probuj
zlapac dwu srok za ogon. Zdecyduj sie albo na C++ (co
bym Ci delikatnie sugerowal), albo na C (ktory juz powoli
umiera z powodu uwiadu starczego) i nie mieszaj tych
dwu swiatow.
Pozdrawiam
Piotr Wyderski
========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.internetia.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: Milosz Skowyra <mewashek_at_nospam_wp.pl>
Subject: Re: AVRGCC i ja raz jeszcze... ;-)
Date: Fri, 14 May 2004 14:53:13 +0200
Piotr Wyderski wrote:
Probowalem wczoraj troche
upic kompilator, ale sie nie dal ;-(
To bardzo dobrze o nim swiadczy. :-)
Niekoniecznie... zrobil mi spora plame... ;-)
Milosz, nie probuj
zlapac dwu srok za ogon. Zdecyduj sie albo na C++ (co
bym Ci delikatnie sugerowal), albo na C (ktory juz powoli
umiera z powodu uwiadu starczego) i nie mieszaj tych
dwu swiatow.
Jasne. Czyli po prostu troche zle zaczalem od C ;-) Postaram sie
poprawic ;-)
--
Regards. Przy odpowiedzi usun "." przed "net" z adresu!!!
|-----------------------------------------------------|
| Milosz Skowyra GSM Mobile +48 600 95 35 72 |
| miloszek_at_nospam_fido.net.org.pl 2:484/2.47 on fidonet |
|-----------------------------------------------------|
========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!news.atman.pl!not-for-mai
From: Krzysztof Rudnik <rudnik_at_nospam_kki.net.pl>
Subject: Re: AVRGCC i ja raz jeszcze... ;-)
Date: Wed, 12 May 2004 16:54:02 +0200
Milosz Skowyra wrote:
Ehlo.
Na wstepie... potrzebne do kombajnu marchewkowego ;-)
Mam strukture:
typedef struct
{
int adres[6];
unsigned char preheat[6];
unsigned char limit[6];
unsigned char character[6];
unsigned char nazwa[16] ;
}eeprom_set;
Struktura owa jest powiazana w pewien sposob z wielopoziomowym menu. W
pewnym miejscu programu tzn. tam gdzie nastepuje wyswietlenie konkretnej
wartosci ze struktury, nastepuje ustawienie wskaznika: int *edit_buffer
na dana za pomoca: edit_pointer=&ustawienia.adres[mep2-2]; W zupelnie
innej czesci programu musze miec mozliwosc edytowania wartosci na ktora
wskazuje edit_buffer. Dokonuje tego za pomoca np. (*edit_pointer)++;
Teraz problem: Jak widac struktura ma 2 typy danych inty i chary. Tak
byc musi, jak zmienie char-y na inty to w EEPROM-ie mi sie nie pomiesci,
adres musi byc intem. Procedura edycji danych musi byc jedna i edytowac
zmienne int i char. Jak to zrobic zeby wskaznik int *edit_buffer mogl
wsazywac obiekty char. Bo wskazywac to potrafi
edit_pointer=(int*)(&ustawienia.limit[mep2-2]); ale zapisuje dana jako
inta (zajmuje 2 bajty i slusznie).
Co powinienem sie dowiedziec ?? I czy w tym przypadku nie mam znow
problemu ze wskaznikami ?? Poczytalem K&R ale nie ma tam zasadniczo
informacji jak postapic w tym przypadku. Teoretycznie moglbym
wykorzystac wskaznik typu void i przepisywac go do wskaznika albo typu
char albo typu int. Ale moze da sie bardziej elegancko. Moglbym tez niby
przeciazyc funkcje, ale wolalbym miec dwa w jednym... da sie tak ??
Jakos prosto, automagicznie sie nie da.
Moze jakos tak (zeby nie kopiowac procedury edytujacej):
edit_int(int * xint)
{
(*xint)++;
}
edit_char(char * xchar)
{
int tmp = xchar[0];
edit_int(&tmp);
xchar[0] = tmp;
}
Komplikuje sie jesli chodzi Ci o cala tablice (wszedzie widze [6]),
trzeba by miec tymczasowa tablice.
Druga wada to ze traci sie sprawdzenie wartosci.
Krzysiek Rudnik
========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.internetia.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: Milosz Skowyra <mewashek_at_nospam_wp.pl>
Subject: Re: AVRGCC i ja raz jeszcze... ;-)
Date: Wed, 12 May 2004 20:35:13 +0200
Krzysztof Rudnik wrote:
Komplikuje sie jesli chodzi Ci o cala tablice (wszedzie widze [6]),
trzeba by miec tymczasowa tablice.
Druga wada to ze traci sie sprawdzenie wartosci.
Dzieki.
--
Regards. Przy odpowiedzi usun "." przed "net" z adresu!!!
|-----------------------------------------------------|
| Milosz Skowyra GSM Mobile +48 600 95 35 72 |
| miloszek_at_nospam_fido.net.org.pl 2:484/2.47 on fidonet |
|-----------------------------------------------------|
========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.internetia.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai