CCS 550 a vnorene struktury

Pavel Hudeček edizon na seznam.cz
Čtvrtek Březen 20 12:09:43 CET 2014


Díky, pomohlo.

Jen mi není jasné, proč jsem to nikde nenašel. Všude bylo to, co jsem tam měl původně (akorát bez packed) např:
http://www.cplusplus.com/doc/tutorial/structures/ ukázka dole.

PH

Od: Tomáš Hamouz 
Musel byste napsat buď


struct __attribute__((packed)) sDhcpTmp1 {
        struct sDhcpTmp dat[DHCPT_poc];
        uint32_t ind; // ind. pro prenos z parse_msg do parse_opt =DHCPT_poc neplatny
} dhcpTmp;

nebo

tzpedef struct  { // probihajici akce, jeste neni hotovo
         uint32_t ipInd;    // index pridelene IP
         uint8_t  rozInd;   // index rozsahu
         uint8_t  st;       // stav 0 volno/hotovo, 1-5 offer-iddle, 255 prave zalozeno
         uint32_t xid;      // Transaction Identifier
 } __attribute__((packed)) t_sDhcpTmp;


struct __attribute__((packed)) sDhcpTmp1 {
        t_sDhcpTmp dat[DHCPT_poc];
        uint32_t ind; // ind. pro prenos z parse_msg do parse_opt =DHCPT_poc neplatny
} dhcpTmp;


> mějme následující kód:

> #define DHCPT_poc 256

> struct __attribute__((packed)) sDhcpTmp { // probihajici akce, jeste neni hotovo
>         uint32_t ipInd;    // index pridelene IP
>         uint8_t  rozInd;   // index rozsahu
>         uint8_t  st;       // stav 0 volno/hotovo, 1-5 offer-iddle, 255 prave zalozeno
>         uint32_t xid;      // Transaction Identifier
> };

> struct __attribute__((packed)) sDhcpTmp1 {
>         sDhcpTmp dat[DHCPT_poc];                       // <<< tady
>         uint32_t ind; // ind. pro prenos z parse_msg do parse_opt =DHCPT_poc neplatny
> } dhcpTmp;

> Proč při překladu vznikne na řádku označeném "<<< tady" následující chyba?

> error: identifier "sDhcpTmp" is undefined

> Zkoušel jesm odstranit  __attribute__((packed)), nebo přidat typedef, ale žádná změna.


Další informace o konferenci Hw-list