工作之余写一下,给有帮助的朋友。 typedef struct ...{ int a; int b; int c; char *str;}PROCLIST_ENTRY;typedef struct ...{ int* a; PROCLIST_ENTRY* entry; int c; int d;}WINDOW_PROCREG;#define BEGIN_CLASSMESSAGE_MAP(msgHandleMap, newClassID, classID) extern PROCLIST_ENTRY msgHandleMap##wpList[]; WINDOW_PROCREG msgHandleMap[1] = ...{...{(int*)NULL, msgHandleMap##wpList, newClassID, classID}}; PROCLIST_ENTRY msgHandleMap##wpList[] = ...{#define END_MESSAGE_MAP() {0, -1, -1, NULL} }; //缺省处理函数.#define ON_MESSAGE(msg , proc) {0, msg, msg , proc},/**///////////////////////////////////////////////////////////////////////////BEGIN_CLASSMESSAGE_MAP(Class, 1, 2) ON_MESSAGE(1, "no.1") ON_MESSAGE(2, "no.2") ON_MESSAGE(3, "no.3") ON_MESSAGE(4, "no.4") ON_MESSAGE(5, "no.5")END_MESSAGE_MAP()/**///////////////////////////////////////////////////////////////////////////int main (int argc, char* argv[])...{ int i; for(i=0; i<5; i++) ...{ printf("%s ", (Class->entry)[i].str); } return 0;}