Zjednoduseni definice tabulky v C

Zdenek Janis janis na alberon.cz
Pátek Říjen 5 16:02:06 CEST 2007


Dobry den,
delam si doplnek pro PG a zajimalo by, zda jde nejak 
zjednosit/zprehlednit definici tabulky cmsProcTab, viz nize:

typedef struct {
     const char          **Typ;
     const char          **Method;
     const char          *Ext;
     cmsCompress_t       *Compress;
     cmsDecompress_t     *Decompress;
} cmsProc_t;

/* (pred)dekladace funkci */
static cmsCompress_t    CompressGZ, CompressBZ;
static cmsDecompress_t  DecompressGZ, DecompressBZ;

static const char *cmsTypGZ[] = {"application/x-gzip", NULL};
static const char *cmsMethodGZ[] = {"gzip", "gz", NULL};
static const char *cmsTypBZ[] = {"application/x-bzip", NULL};
static const char *cmsMethodBZ[] = {"bzip", "bz2", "bz", NULL};

/* Seznam podoprovanych compresnich metod */
static const cmsProc_t cmsProcTab[] = {
     {cmsTypGZ, cmsMethodGZ, ".gz", CompressGZ, DecompressGZ},
     {cmsTypBZ, cmsMethodBZ, ".bz2", CompressBZ, DecompressBZ},

     {NULL, } /* ukonceni tabulky - musi byt na konci !!! */
};

A me by se libilo, kdyby sla nejak upravit posledni cast, aby vypadal 
asi tak nasledovne:

vyhodit definice cmsTypGZ, cmsMethodGZ, cmsTypBZ, cmsMethodBZ

static const cmsProc_t cmsProcTab[] = {
     {
	{"application/x-gzip", NULL},
	{"gzip", "gz", NULL},
	".gz", CompressGZ, DecompressGZ},
     {
	{"application/x-bzip", NULL},
	{"bzip", "bz2", "bz", NULL},
	".bz2", CompressBZ, DecompressBZ},

     {NULL, } /* ukonceni tabulky - musi byt na konci !!! */
};

Nicmene GCC mi to neohodnoti nejlepe, ale verim, ze na existuje nejaka 
cesta.


Dekuji za pripadne namety a preji pekny den.

-- 
     Zdenek Janis



Další informace o konferenci Linux