pole bitového pole v C

Jaroslav Buchta jaroslav.buchta na hascomp.cz
Sobota Leden 12 20:26:31 CET 2013


Takhle mi to AVR C sezere: (jeste jsem musel doplnit zavorky)

char byt;

typedef union bytX

{

     char value;

     unsigned bit0 : 1;

}_byt;

int main (void)
{

     (*((_byt*)&byt)).bit0 = 1;


Dne 12.1.2013 20:07, Miroslav Draxal napsal(a):
> Re: pole bitového pole v C
>
> "cíí brďo, to je složitý"
>
> *((_byt*)&byt).bit0 = 1 ;
>
> Pomožte mi to prosím rozpitvat?
>
> hodí chybu
>
> podprogramy.c:151 warning: illegal conversion between pointer types
>
> pointer to union S387 -> pointer to unsigned char
>
> podprogramy.c:207: error: struct/union required
>
> podprogramy.c:207: error: illegal conversion between types
>
> int -> union S453
>
> *From:*hw-list-bounces na list.hw.cz [mailto:hw-list-bounces na list.hw.cz] 
> *On Behalf Of *Jaroslav Buchta
> *Sent:* Saturday, January 12, 2013 7:45 PM
> *To:* HW-news
> *Subject:* Re: pole bitového pole v C
>
> imho jedine pres ukazatel: *((_byt*)&byt).bit0 = 1 kde uz neni mozna 
> zadna typova kontrola. (nezkousel jsem to, zavorkama si nejsem vubec 
> jisty...)
>
> Dne 12.1.2013 19:38, Miroslav Draxal napsal(a):
>
>     Ještě přihodím do fora otázečku. Mějme
>
>     Char byt;
>
>     a
>
>     typedef union bytX
>
>     {
>
>     char value;
>
>     unsigned bit0 : 1;
>
>     }_byt;
>
>     Lze udělat
>
>     _bytX.value = byt;
>
>     Nelze přetypovat proměnou byt na _byt??? Ne hodnotu, ale přímo
>     proměnnou. Překladač mi použije dvě proměnné, mohl by používat
>     původní. Po přetypování proměnné asi takhle.
>
>     Byt.bit0 = 1;
>
>     Míra
>
>     *From:*hw-list-bounces na list.hw.cz
>     <mailto:hw-list-bounces na list.hw.cz>
>     [mailto:hw-list-bounces na list.hw.cz] *On Behalf Of *Miroslav Draxal
>     *Sent:* Saturday, January 12, 2013 6:51 PM
>     *To:* 'HW-news'
>     *Subject:* RE: pole bitového pole v C
>
>     Když já pořádně neumím pic, a to mam jít do něčeho úplně
>     neznámého? Nechte mi je. Pracuji s mrňavým 10f200, středním
>     18f1320/30 a s velkým 18f4620. Nic víc mi ke štěstí nechybí. Ono
>     jde spíš si osvojit pořádně to C, přijít na určité finty jak to
>     napsat, vymyslet správné postupy atd. mě spíš přijde, že je to víc
>     o soft než hw. Jak říkám, píču v C, ale sám sebe přistihnu, jak na
>     to jdu ze strany ASM. Míra
>
>     *From:*hw-list-bounces na list.hw.cz
>     <mailto:hw-list-bounces na list.hw.cz>
>     [mailto:hw-list-bounces na list.hw.cz] *On Behalf Of *Jaroslav Buchta
>     *Sent:* Saturday, January 12, 2013 6:41 PM
>     *To:* HW-news
>     *Subject:* Re: pole bitového pole v C
>
>     Ja stale nechapu, proc se nekdo drzi procesoru s tak mizernou
>     vybavou. Chapu u velkych serii, ze jde o kazdou korunu ale na
>     bastleni tam je snad jedno jestli tam vrazim PIC za 30 nebo ARM za
>     70 (pripadne konzervativne treba ATMEGA32 za 40)... Ladici
>     nastroje jsou za par stovek, soft zadarmo. Kdyz se to programuje v
>     C-cku, tak je to celkem stejne a tech par potrebnych periferi se
>     osaha za chvili (s pouzitim vzorovych zdrojaku to neni potreba ani
>     moc studovat pro standardni pouziti).
>
>     Dne 12.1.2013 18:36, Miroslav Draxal napsal(a):
>
>         Ano, a porodníma bolestma jsem vyplodil něco hodně podobného,
>         jenom  jsem všude použil char, protože mam jenom 256 RAM. Na
>         netu jsem kdysi zahlídnul něco, co používalo nějakou fintu.
>         Ale za boha si nevzpomenu kde to bylo. Byli to dva řádky. Míra
>
>         *From:*hw-list-bounces na list.hw.cz
>         <mailto:hw-list-bounces na list.hw.cz>
>         [mailto:hw-list-bounces na list.hw.cz] *On Behalf Of *Jan Waclawek
>         *Sent:* Saturday, January 12, 2013 3:45 PM
>         *To:* HW-news
>         *Subject:* Re: pole bitového pole v C
>
>         > je to vlastně pole char[3], chtěl bych napsat něco univerzálního, kde bych
>         > zadal ukazatel na počátek pole, jaký bit nastavit např.14.
>         >
>         > Nějak mě nenapadá žádný elegantní způsob. Ale zase, někde
>         jsem to někde
>         > viděl v asm pro PIC. Míra
>
>         #include <stdint.h>
>         uint8_t bits[3]
>
>         void SetBit(uint8_t * bitfield, uint8_t idx, _Bool value) {
>         uint8_t mask;
>           mask = 1 << (idx % 8);
>           if (value) {
>             bitfield[idx / 8] |= mask;
>           } else {
>             bitfield[idx / 8] &= (~mask) & 0xFF;
>           }
>         }
>
>         _Bool GetBit(uint8_t * bitfield, uint8_t idx) {
>           return (_Bool)(bitfield[idx / 8] & (1 << (idx % 8))
>         }
>
>         wek
>         wek
>         _______________________________________________
>         HW-list mailing list  -  sponsored by www.HW.cz <http://www.HW.cz>
>         Hw-list na list.hw.cz <mailto:Hw-list na list.hw.cz>
>         http://list.hw.cz/mailman/listinfo/hw-list
>
>
>
>         __________ Informace od ESET NOD32 Antivirus, verze databaze
>         7886 (20130112) __________
>
>         Tuto zpravu proveril ESET NOD32 Antivirus.
>
>         http://www.eset.cz
>
>
>
>         __________ Informace od ESET NOD32 Antivirus, verze databaze
>         7886 (20130112) __________
>
>         Tuto zpravu proveril ESET NOD32 Antivirus.
>
>         http://www.eset.cz
>
>
>         _______________________________________________
>
>         HW-list mailing list  -  sponsored bywww.HW.cz  <http://www.HW.cz>
>
>         Hw-list na list.hw.cz  <mailto:Hw-list na list.hw.cz>
>
>         http://list.hw.cz/mailman/listinfo/hw-list
>
>
>
>
>     __________ Informace od ESET NOD32 Antivirus, verze databaze 7886
>     (20130112) __________
>
>     Tuto zpravu proveril ESET NOD32 Antivirus.
>
>     http://www.eset.cz
>
>
>
>     __________ Informace od ESET NOD32 Antivirus, verze databaze 7886
>     (20130112) __________
>
>     Tuto zpravu proveril ESET NOD32 Antivirus.
>
>     http://www.eset.cz
>
>
>     __________ Informace od ESET NOD32 Antivirus, verze databaze 7886
>     (20130112) __________
>
>     Tuto zpravu proveril ESET NOD32 Antivirus.
>
>     http://www.eset.cz
>
>
>
>     __________ Informace od ESET NOD32 Antivirus, verze databaze 7886
>     (20130112) __________
>
>     Tuto zpravu proveril ESET NOD32 Antivirus.
>
>     http://www.eset.cz
>
>
>     __________ Informace od ESET NOD32 Antivirus, verze databaze 7886
>     (20130112) __________
>
>     Tuto zpravu proveril ESET NOD32 Antivirus.
>
>     http://www.eset.cz
>
>
>
>     __________ Informace od ESET NOD32 Antivirus, verze databaze 7886
>     (20130112) __________
>
>     Tuto zpravu proveril ESET NOD32 Antivirus.
>
>     http://www.eset.cz
>
>
>
>     _______________________________________________
>
>     HW-list mailing list  -  sponsored bywww.HW.cz  <http://www.HW.cz>
>
>     Hw-list na list.hw.cz  <mailto:Hw-list na list.hw.cz>
>
>     http://list.hw.cz/mailman/listinfo/hw-list
>
>
>
>
> __________ Informace od ESET NOD32 Antivirus, verze databaze 7886 
> (20130112) __________
>
> Tuto zpravu proveril ESET NOD32 Antivirus.
>
> http://www.eset.cz
>
>
>
> __________ Informace od ESET NOD32 Antivirus, verze databaze 7886 
> (20130112) __________
>
> Tuto zpravu proveril ESET NOD32 Antivirus.
>
> http://www.eset.cz
>
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list

------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20130112/4b1a29bb/attachment.htm>


Další informace o konferenci Hw-list