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
125
Vastaukset
- jaaha.
jaaha
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Tänään pyörit ajatuksissa enemmän, kun erehdyin lukemaan palstaa
En saisi, silti toivon että sinä vielä palaat ja otetaan oikeasti selvää, hioituuko särmät ja sulaudummeko yhteen. Vuod225234- 254398
- 282541
- 342264
- 372008
- 151928
En ole koskaan kokenut
Ennen mitään tällaista rakastumista. Tiedän että kaipaan sinua varmaan loppu elämän. Toivottavasti ei tarvitsisi vain ka191617- 121541
Voi ei! Jari Sillanpää heitti keikan Helsingissä - Hämmästyttävä hetki lavalla...
Ex-tangokuningas on parhaillaan konserttikiertueella. Hän esiintyi Savoy teatterissa äitienpäivänä. Sillanpää jakoi kons211277Kerranki asiat oikein
Ilkka ja muut pienpuolueeet...teitte hyvän työn kun valitsitte pätevän henkilön virkaan eikä kepulle passelia!! Jatkakaa101194