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
126
Vastaukset
- jaaha.
jaaha
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
- 1077763
Siekkilässä ajettu ihmisten yli- mitä tapahtui? Länsi-Savo ei ole uutisoinut asiata
Manneja, vaiko matuja?1126026- 835177
- 1394546
Alavuden sairaala
Säästääkö Alavuden sairaala sähkössä. Kävin Sunnuntaina vast. otolla. Odotushuone ja käytävä jolla lääkäri otti vastaan113220- 592997
- 582938
Törkeää toimintaa
Todella törkeitä kaheleita niitä on Ylivieskassakin. https://www.ess.fi/uutissuomalainen/8570818102454- 612437
Hei........
Pelkkä sun näkeminen saa mut hymyilemään pitkin iltaa. Oot niin 🤩😘 Edellinen poistettiin.562066