[AVR GCC] Kompilacja warning ....

Jun 17, 2004 4 Replies

uC.c:368: warning: passing arg 2 of `FlashMem_write_block' discards qualifiers f rom pointer target type uC.c:370: warning: passing arg 1 of `FlashMem_write_block' discards qualifiers f rom pointer target type



funkcja: void FlashMem_read_block(const void *buf, u32 *addr, size_t n){ u08 *buf_p; buf_p = (u08 *)buf;



register u16 Page = *addr/264; register u16 Buff = *addr%264;



FlashMem_READY(); DATAFLASH_read_mem_page_to_buffer(Page); while ( n-- != 0) { FlashMem_READY(); *buf_p++ = DATAFLASH_read_mem_buf(Buff++); if ( Buff > 264 ) { Buff = 0; if ( Page < 512 ) Page++; else Page = 0; FlashMem_READY(); DATAFLASH_read_mem_page_to_buffer(Page); } }



*addr = Page * 264 + Buff;

wywolanie: FlashMem_write_block( &StoreTmp, &Store_ptr, sizeof(Store_t) ); gdzie StoreTmp struktura, Store_ptr adres gdzie ma byc zapisana Store_t wielkosc struktury.



juz OK moze sie komus przyda jak to zrobilem wiec dodalem volatile jak nizej: void FlashMem_write_block(volatile void *buf, volatile u32 *addr, size_t n);

pomijając to, że piszesz o innej funkcji niż wkleiłeś, `const' w definicji FlashMem_read_block() nie ma najmniejszego sensu, bo ta funkcja z definicji modyfikuje bufor, a Ty w pierwszej linijce zmieniasz wskaźnik const na nie-const.

i jaki ma sens volatile w parametrach funkcji?

w.

read write to identycze funkcjedlatego sie walnalem, dlaczego 'const' wzrorowalem sie na bibliotece eeprom.h.

zobacz dobrze buffor nie jest modyfikowany.

nie wiem, ale przeszukalem archiwum

formatting link
i takie rozwiazanie znalazlem i teraz nie wywala ostrzezen.

void eeprom_read_block (void *buf, const void *addr, size_t n); void eeprom_write_block (const void *buf, void *addr, size_t n);

ktoś tu kręci (;

void FlashMem_read_block(const void *buf, u32 *addr, size_t n){ u08 *buf_p; buf_p = (u08 *)buf; /* ... */ *buf_p++ = DATAFLASH_read_mem_buf(Buff++);

zmieniasz zawartość tego, co jest pod adresem `buf', więc `const' po prostu nie ma sensu.

wystarczyłby porządek z `const', bo o ile mi wiadomo, `volatile' nie ma wpływu na parametry funkcji.

w.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required