Newsgroup: it.hobby.elettronica.digitale
Titolo: inizializzare array {0xAA,0xBB,0xFF,0xFF,0xFF fino alla fine} si può?

Ciao
 
ditemi se ï¿œ possibile in C o tramite preprocessore
 
ho un array di 8 elementi,ci metto 4 valori iniziali e voglio che il 
resto sia pieno di 0xFF
 
  u_8 array_prova[]8={0xAA,0xBB,0x12,0x34,0xFF,0xFF,0xFF,0xFF};
 
ma se l'array fosse di 1024 elementi come si fa per evitare di scrivere 
a mano 1020 volte "0xFF"?
 
Uno potrebbe dirmi "fai un loop",ma non ï¿œ la risposta che mi serve 
perchï¿œ il mio array potrebbe essere in Flash
 
const u_8 array_prova[]8={0xAA,0xBB,0x12,0x34,0xFF,0xFF,0xFF,0xFF..};
 
Mi pare che col C18 ci fosse un modo,al momento mi interessa col 
Codewarrior- GNU
 
grazie

 grazie
 
Non credo che ci sia un modo standard.
Potresti farlo con una macro, ma piu' semplicemente
usi la funzione copia incolla dell'editor.


ho trovato qualcosa di inerente qui
http://stackoverflow.com/questions/1065774/c-c-initialization-of-a-normal-array-with-one-default-value
 
 

Il 11/06/2014 16:29, blisca ha scritto:> ssore
 >
 >>> ho un array di 8 elementi,ci metto 4 valori iniziali e voglio che il
 >>>
 >>> resto sia pieno di 0xFF
 >
 >>>    u_8 array_prova[]8={0xAA,0xBB,0x12,0x34,0xFF,0xFF,0xFF,0xFF};
 >>>
 >>>
 >>>
 >>> ma se l'array fosse di 1024 elementi come si fa per evitare di scrivere
 >>>
 >>> a mano 1020 volte "0xFF"?
 >
 >>>
 >>> Uno potrebbe dirmi "fai un loop",ma non �oe la risposta che mi serve
 >>>
 >>> perch�oe il mio array potrebbe essere in Flash
 >
 >>> const u_8 array_prova[]8={0xAA,0xBB,0x12,0x34,0xFF,0xFF,0xFF,0xFF..};
 >
 >>> Mi pare che col C18 ci fosse un modo,al momento mi interessa col
 >>>
 >>> Codewarrior- GNU
 >
 >>>
 >>> grazie
 >>
 >> Non credo che ci sia un modo standard.
 >> Potresti farlo con una macro, ma piu' semplicemente
 >> usi la funzione copia incolla dell'editor.
 >>
potrei ,piuttosto che niente ,fare in un .h
 
#define LIST_FILL_0xFF 
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,\
 
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,\ 
 
 
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,\
 
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,\ 
 
 
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,\
 
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,\ 
 
 
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
 
e poi
const u_8 array_prova[1024]={0xAA,0xBB,0x12,0x34, LIST_FILL_0xFF}
dovrei sempre per� calcolarmi quanto c'� da riempire
 
 

 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
 
E se facessi:
 
#define LIST1_0xFF		0xFF
#define LIST2_0xFF		LIST1_0xFF, LIST1_0xFF
#define LIST4_0xFF		LIST2_0xFF, LIST2_0xFF
#define LIST8_0xFF		LIST4_0xFF, LIST4_0xFF
#define LIST16_0xFF		LIST8_0xFF, LIST8_0xFF
 
...insomma, hai capito il senso. Dovrebbe essere facile poter creare una 
sequenza arbitraria di 0xFF con un numero ragionevole di macro.


ho postato e ho avuto interessanti risposte anche su
https://groups.google.com/forum/#!topic/comp.arch.embedded/2NSiqXMjz2c