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