Portál AbcLinuxu, 12. května 2025 03:01

Dotaz: C - #define uvnitr struct

7.6.2009 11:39 pivo231 | skóre: 6
C - #define uvnitr struct
Přečteno: 454×
Odpovědět | Admin

Zdravim,

narazil jsem na, pro me zatim neznamou, syntaxi pouziti #define a to uvnitr definice typu struktura. Nikde jsem se s tim zatim nesetkal. Poradil by mi nekdo, k cemu je to dobre a jak s takovymi konstantami pracovat? Uvadim priklad:

typedef struct msg{
  unsigned short flags;
  #define C1 0x01
  #define C2 0x02
  #define C3 0x04
  char *reply;
  int len;
} MSG_T;

Diky

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

7.6.2009 11:55 pivo231 | skóre: 6
Rozbalit Rozbalit vše Re: C - #define uvnitr struct
Odpovědět | | Sbalit | Link | Blokovat | Admin

...zapomnel jsem dodat, ze si myslim ze to tak zapsane jen z hlediska citelnosti kodu. U toho prikladu aby bylo videt, ze se ty konstanty pouzivaji ve flags. Ale nevim jestli to je jeste kvuli necemu jinemu...

7.6.2009 13:01 alias01 | skóre: 4
Rozbalit Rozbalit vše Re: C - #define uvnitr struct
Odpovědět | | Sbalit | Link | Blokovat | Admin
Kdyz se zamyslite nad tim, v jakych krocich funguje build ceckoveho kodu, zjistite, ze nejde o zadnou specialni syntaxi. V prvnim kroku buildu se provede preprocessing (man cpp) kdy dojde k vyhodnoceni maker a direktiv zacinajicich hashem, a v dalsim kroku se tudiz do samotneho kompilatoru jazyka C dostane struktura ve Vam zname podobe. S gramatikou jazyka C tento "specialni" zapis vubec nesouvisi, autor tim chtel zrejme jen naznacit, ze ony tri CX makra se zrejme pouziji jako konstantni masky pro atribut flags.
7.6.2009 23:51 pivo231 | skóre: 6
Rozbalit Rozbalit vše Re: C - #define uvnitr struct

Myslel jsem si to, jen mě to zaskočilo. Díky.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.