Anonymní profil shela – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil shela – Programujte.comAnonymní profil shela – Programujte.com

 

Příspěvky odeslané z IP adresy 158.196.65.–

shela
C / C++ › Designated initializers v c89
20. 2. 2012   #153827

#3 ondra.holub

toto nefunguje :-(. Snaží se to pokaždé nacpat do první položky.

shela
C / C++ › Designated initializers v c89
20. 2. 2012   #153825

Díky za odpověď.

Poznávání "co, je co" řeším ve struktuře, ve které je ten union vložený a to, o co se pokouším je implementace adresáře objektů "object dictationary" k CANopen. Protože nemám místa nazbyt, tak jsem chtěl jednoduché objekty implementovat pouze jako ukazatel na data někde jinde v programu a ty složitější řešit přes ukazatele na funkce.

Můžeš mě prosím popostrčit ohledně void ukazatelů? Při zběžném googlování jsem nenarazil na způsob, jak je realizovat tak, aby fungovali jako ukazatele na proměnné i funkce. Je to vůbec možné?

shela
C / C++ › Designated initializers v c89
20. 2. 2012   #153807

Dobrý den,

mám principiálně takovýto union:

typedef union
{
  int *pInt;
  void (*pFcn)(int);
} u_t;

a potřebuji staticky definovat pole s tímto unionem, takže něco jako:

int fooInt;
void fooFce(int i);

const u_t u[] = {{.pFce = &fooFce}, {.pInt = &fooInt}};

Problém je v tom, že nemůžu použít C podle c99, ale jen c89. Takže nemůžu použít "designated initializers". Zároveň to píšu pro mikrokontrolér, takže jde o každý byte a nemůžu si dovolit nahradit union strukturou a pole musí být definováno s const.

Nevíte někdo, jak toto vyřešit?

Díky moc!

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý