[ aleksazr @ 11.08.2010. 21:04 ] @
Recimo da imam ovakvu strukturu:

Code:

typedef struct {
  ...
  ...
} PROBA, *pPROBA;


Zelim da, koristeci
Code:

structsize(PROBA)


dobijem:
Code:

#define sPROBA (sizeof (PROBA))


Napravio sam macro
Code:

#define structsize(structname) #define s##structname (sizeof (structname))



Kompajler se tu buni (expected macro formal parameter)
kao da mu smeta #define unutar prethodnog #define pa sam prepravio na
Code:

#define define #define
#define structsize(structname) define s##structname (sizeof (structname))


ali i dalje mu ne odgovara. Gde gresim?
[ aleksazr @ 11.08.2010. 21:18 ] @
A ne bi bilo lose ni imati ovako nesto

Code:

#define BEGINstruct typedef struct {
#define ENDstruct(structname) } structname, *p##structname; define s##structname (sizeof (structname))

BEGINstruct
  int minX, maxX;
ENDstruct(PROBA)

pa da dobijem

typedef struct {
  int minX, maxX;
} PROBA, *pPROBA;
#define sPROBA (sizeof (structname))


ali ni ovo ne radi..
[ Mihajlo Cvetanović @ 11.08.2010. 21:59 ] @
Ne može jedan define unutar drugog, niti bilo koja druga preprocesorska direktiva. Mislim da ne može to kako ti hoćeš, i verovatno je najjednostavnije da prosto koristiš sizeof(PROBA) svuda gde je to potrebno.
[ aleksazr @ 12.08.2010. 08:59 ] @
E ovaj C stvarno zna da omane na najjednostavnijim stvarima!

Dobro, BEGINstruct i ENDstruct mogu da rade, samo bez sizeof dodatka.
A to mora onda posle kao
#define sPROBA (sizeof (PROBA))