Code vereinfachen?
-
Hallo Leute!
Ich habe mir ein paar Makros gebastelt, mit denen ich komfortabel auf Strukturen in einem Flash-Speicher zugreifen kann.
Hier mal etwas Code:#include <stdio.h> #include <string.h> #define FIELD_OFFSET(type, fld) ((long) &(((type *)0)->fld)) #define FIELD_SIZE(type, fld) (sizeof (((type *)0)->fld)) #define DF_CONFIG_OFFSET 0 //////////////////////////// Simulation /////////////////////// typedef struct __inner { char ia; char istr[14]; int lalilu; } INNER; typedef struct __test { int x; struct __inner instruct; char str[13]; int y; } CONFIGRECORD; void DF_Read (unsigned long addr, void *dest, int size) { printf ("DF_Read:\n\tfrom flash address:%d\n\tto memory at:%x\n\tsize:%d\n\n", addr, dest, size); } ///////////////////////////////////////////////////////////// // Reads one entry from config page into 'dest' #define CFG_READENTRY(entry,dest) \ DF_Read(DF_CONFIG_OFFSET+FIELD_OFFSET(CONFIGRECORD,entry),dest,FIELD_SIZE(CONFIGRECORD,entry)) // Reads one subentry of entry from config page into 'dest' #define CFG_READ_SUB_ENTRY(entry,sub,dest) \ DF_Read(DF_CONFIG_OFFSET+FIELD_OFFSET(CONFIGRECORD,entry.sub),dest,FIELD_SIZE(CONFIGRECORD,entry.sub))
Ist es möglich, daß CFG_READ_SUB_ENTRY-Makro so zu schreiben, daß man den Namen der äußeren Struktur nicht mit angeben muß?
Danke!!!