KEYWORDS: C gcc macro stringize offset sizeof printf tietue kenttä muuttuja koko
Jos tarvitaan tapaa, jolla saada näppärästi koodi toimimaan näin:
UD(inp_fill);
- tulostaa tietueen kentän inp_fill offsetin tietueessa, koon ja nimen
SEKÄ
IV(c);
- tulostaa muuttujann c koon ja nimen
- tulosteet heksadesimaalisina:
se sujuu allaolevan tapaisella koodilla ...
( jäikö tästä vielä jotain tärkeää pois ??? )
struct ud
{
int (*inp_hook) (struct ud*);
uint8_t inp_curr;
uint8_t inp_fill;
};
typedef struct ud ud_t;
typedef unsigned char BYTE;
typedef BYTE* PBYTE;
// #define HEX "0x" // a C -style hexadecimal prefix
#define HEX "$" // a Delphi -style hexadecimal prefix
void showFieldInfo(char *name, int size, PBYTE fieldaddr, PBYTE therec) {
//
int offset;
if ( (int)therec == 0 ) {
// no record.
printf("size: %s%08x name: [%s]\n", HEX, size, name);
} else {
// yes, a record:
offset = (int)fieldaddr - (int)therec;
printf("offset: %s%08x size: %s%08x name: [%s]\n", HEX, offset, HEX, size, name);
}
}
#define INFO_ANY(RECORD, fieldname) showFieldInfo(#fieldname, sizeof(RECORD.fieldname), (PBYTE)&RECORD.fieldname, (PBYTE)&RECORD)
#define INFO_UD(fieldname) INFO_ANY(ud_obj, fieldname)
#define UD INFO_UD
#define INFO_VAR(fieldname) showFieldInfo(#fieldname, sizeof(fieldname), (PBYTE)&fieldname, NULL)
#define IV INFO_VAR
int main(void) {
ud_t ud_obj;
printf("sizeOf(ud_t) = %d\n", sizeof(ud_t));
printf("\n");
printf("\n");
printf("NOTE: All offsets and sizes below are hexadecimal.\n");
printf("\n");
UD(inp_hook);
UD(inp_curr);
UD(inp_fill);
long unsigned long c;
IV(c);
return 0;
}
sizeof(), macro, stringize, tulostus....
C_vinkki
1
130
Vastaukset
- jaaha.
jaaha
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Mitä yhteistä on sulla ja kaivatulla?
Onko teillä samantyyppinen olemus tai luonne? Vai muistuttaako vartalonne toisiaan? Tai kasvot? Entä pukeutuminen? Onko991546Kerran oltiin mekin kahdestaan
Saanko sanoa, että minua kyllä vähän huvitti jälkeenpäin? Olit kuin vapiseva jänis ketun vieressä valmis loikkimaan paik131216- 2301200
Persut yritti estää somalinaista väittelemästä lääketieteen tohtoriksi
Yrittivät saada hänet lähihoitajakouluun, vaikka pärjäsi hyvin koulussa. Nyt hän on yliopistossa väitellyt lääketieteen2671068Oikeasti, voitais mennä kahville
ja jutella niin kuin normi-ihmiset. Kyllä toivon sitä. En pelkää kohdata enkä istua sun kanssa samassa pöydässä. Miten o81989- 141970
Jos nainen harrastaa seksiä
Useiden kanssa, miten se eroaa miesten mielestä siitä, jos miehellä on ollut useita s kumppaneita? Oletan että kaikki mi179963Pihlaja-puulle
Illat on mulle pahimpia. En tiiä miks se olis vaan parasta yöstä toiseen nukkua sun kanssa ja herätä sun kasvoihin. Jos15949- 74819
Yritin keväällä unohtaa sinut nainen
mutta siinä kävi niin, että ikävä tuli korkoineen takaisin. Niin että mikä taikavoima sinulla on minuun, sitä joutuu mie33812