Вот пример создания списка функций, сопоставленных с простой строкой.
Сначала введите typedefs:
typedef GenList *(*DBLISTLOADER)(Database *pDB, char *quellCD, char *profilName);
typedef ObjDescription *(*DBCOLUMNLOADER)();
typedef struct dbinfo
{
char *dbName;
DBLISTLOADER dbListLoader;
DBCOLUMNLOADER dbColumnLoader;
char *options;
} DBINFO;
Тогда таблица сопоставления:
DBINFO dbInfoList[] =
{
{ "SRCDOC", loadSRCDOC, colSRCDOC, "q" },
{ "PRF_CD", loadPRF_CD, colPRF_CD, "" },
{ "MEDIA", loadMEDIA, colMEDIA, "" },
{ NULL, NULL, NULL }
};
Теперь, чтобы найти функцию из этой таблицы и вызвать ее:
while (dbInfoList[i].dbName != NULL)
{
if (strcmp(dbInfoList[i].dbName, szDatabase) == 0)
{
return (dbInfoList[i].dbListLoader)(pDB, quellCD, profilName);
}
i++;
}
Извините, если это немного "сырой". Вставлено прямо из нашего кода; -)