iki boyutlu sabit diziyi fonksiyona aktarmak.

Başlatan XX_CİHAN_XX, 04 Eylül 2012, 14:37:30

XX_CİHAN_XX

Bununla ilgili sorun yaşıyorum.
Örneğin aşağıdaki gibi bir dizim var.
const uint8_t tp_list[219][32] = {
	{"bla bla bla                                      "},    //1
	{"zzzzzzzzzzzzzzzzzz                       "},   //2


          ..............................                           };  //219

Bu diziyi fonksiyona aktarmayı şöyle yapıyorum
list_box(32,48,256,240,16,tp_list,219,32);

Bu diziyi geçirdiğim fonksiyon parametreleride şöyle:
uint8_t list_box (uint16_t x1, uint8_t y1, uint16_t x2, uint8_t y2, uint8_t size, const uint8_t* const*  list, uint8_t x, uint8_t y)
{
}

const uint8_t* const*  list
yerine
const uint8_t ** list
yada uint8_t **  list
Şeklinde de denedim ama derleyici hata veriyor. Keil kullanıyorum STM32F4 için.
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

yamak

Hocam bi de uint8_t** const list; şeklinde yazmayı dener misiniz?

XX_CİHAN_XX

Aynı hatayı verdi hocam hata şu:
main_sources\main.C(185): error:  #167: argument of type "const uint8_t (*)[32]" is incompatible with parameter of type "uint8_t **const"

Hatalı satır olarak bu satırı gösteriyor.
list_box(32,48,256,240,16,tp_list,219,32);

Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

Erdem

Burada sorun basit. Parametre olarak 32 tane işaretsiz tamsayıdan oluşan bir diziyi gösteren bir gösterge istiyormuş.

const uint8_t (*gosterge)[32] = tp_list;

Sonra list_box'a parametre olarak göstergeyi göndereceksin sanırım (x1, y1, x2, y2, size, gosterge, x, y)

Bu konuyu aslında bu mesajda daha ayrıntılı olarak konuşmuştuk:

https://www.picproje.org/index.php/topic,42112.0.html

XX_CİHAN_XX

Alıntı yapılan: Erdem  - 04 Eylül 2012, 16:19:28
Burada sorun basit. Parametre olarak 32 tane işaretsiz tamsayıdan oluşan bir diziyi gösteren bir gösterge istiyormuş.

const uint8_t (*gosterge)[32] = tp_list;

Sonra list_box'a parametre olarak göstergeyi göndereceksin sanırım (x1, y1, x2, y2, size, gosterge, x, y)

Bu konuyu aslında bu mesajda daha ayrıntılı olarak konuşmuştuk:

https://www.picproje.org/index.php/topic,42112.0.html
Yok hocam yemedi.
Ana program:
extern const uint8_t tp_list[219][32];
const uint8_t (*gosterge)[32] = tp_list;

//.........................................

list_box(32,48,256,240,16,gosterge,219,32);


Fonksiyonun bulunduğu program:

const uint8_t tp_list[219][32] = {
	{"sakdjlskjkssmdöçmasçdömçöasdm"},   //1
	{"kskskskskdljsldkjakdjkadsdkjskdj  "},   //2
         .......................................................};    //219

void list_box (uint16_t x1, uint8_t y1, uint16_t x2, uint8_t y2, uint8_t size, const uint8_t list[][32], uint8_t x, uint8_t y)
{
}

Genel yapı bu şekilde
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

Erdem


XX_CİHAN_XX

#6
Alıntı Yapmain_sources\main.C(185): error:  #167: argument of type "const uint8_t (*)[32]" is incompatible with parameter of type "uint8_t **const"


mesaj birleştirme:: 05 Eylül 2012, 09:01:13

Hocam sorun halloldu kusura bakmayın .h uzantılı dosyada güncelleme yapmamışım fonksiyon parametrelerindeki değişimi.  :-[
Teşekkür ederim.
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.