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!!! 🙂 🙂 🙂


Anmelden zum Antworten