直接贴文件:CClassTest.c CClassTest.h MainFunction.c,一起三个文件。 CClassTest.h #include <stdio.h> #include <stdlib.h> #include <assert.h> #include <malloc.h> #include <string.h> #ifndef _CCLASSTEST_H_ #define _CCLASSTEST_H_ #ifndef CClassTest_Struct_Define typedef struct CClassTest_Struct { struct CClassTest_Struct *this; char *szName; int nAge; char *szSex; char *(*GetName)(void *); int (*GetAge)(void *); char *(*GetSex)(void *); } CClassTest; #define CClassTest_Struct_Define #endif CClassTest *CClassTest_Initial(); CClassTest *CClassTest_Initial_Param(char *szName, int nAge, char *szSex); void CClassTest_Destroy(CClassTest * pCClassTest); static char *GetName(void *this); /* »ñÈ¡ÐÕÃû */ static int GetAge(void *this); static char *GetSex(void *this); #endif /* _CCLASSTEST_H_ */ CClassTest.c #include "CClassTest.h" CClassTest *CClassTest_Initial() { CClassTest *cClassTest = (CClassTest *)malloc(sizeof(CClassTest)); memset(cClassTest, 0, sizeof(CClassTest)); cClassTest->nAge = 24; cClassTest->szName = "XIAOXIN"; cClassTest->szSex = "M"; cClassTest->this = cClassTest; cClassTest->GetAge = GetAge; cClassTest->GetName = GetName; cClassTest->GetSex = GetSex; printf("0x%08X: malloc/n", cClassTest); return cClassTest; } CClassTest *CClassTest_Initial_Param(char *szName, int nAge, char *szSex) { CClassTest *cClassTest = (CClassTest *)malloc(sizeof(CClassTest)); memset(cClassTest, 0, sizeof(CClassTest)); cClassTest->nAge = nAge; cClassTest->szName = szName; cClassTest->szSex = szSex; cClassTest->this = cClassTest; cClassTest->GetAge = GetAge; cClassTest->GetName = GetName; cClassTest->GetSex = GetSex; printf("0x%08X: malloc/n", cClassTest); return cClassTest; } void CClassTest_Destroy(CClassTest *pCClassTest) { if (pCClassTest) { printf("0x%08X: free/n", pCClassTest); free(pCClassTest); } } char *GetName(void *this) { return ((CClassTest *)this)->szName; } int GetAge(void *this) { return ((CClassTest *)this)->nAge; } char *GetSex(void *this) { return ((CClassTest *)this)->szSex; } MainFunction.c #include <stdio.h> #include <stdlib.h> #include <time.h> #include <string.h> #include "Log.h" #include "StaticArrayQueue.h" #include "StaticArrayStack.h" #include "DynamicArrayStack.h" #include "DynamicArrayQueue.h" #include "ChainStack.h" #include "ChainQueue.h" #include "CClassTest.h" void function(char const *szInput) { printf("Function: %s/n", szInput); } // 声明pf为函数指针 void (*pf)(char *) = &function; int erroneous(int a, int b); #define PRINTF_ENABLE 1 #ifdef PRINTF_ENABLE #define OUT_OUT printf #else #define OUT_OUT // /printf #endif #define assert_user_define(e) ((void)((e)||(printf("/nASSERT_USER_DEFINE:/nFile: %s/nLine: %d/n/n", __FILE__, __LINE__)))) extern void print_tokens(char *line); int main() { char *szFileName = "D://MFC"; char szTest[] = "D://MFC//20100727//FunctionPoint//Data.log"; int a = 11; int b = 1; int c = a---b--; CClassTest *aaa = CClassTest_Initial(); char *ccccccc = strstr("aabbbbaaaaaaaaa", "aa"); char dddddddddd[] = "This is english! wa ha ha 11"; // int aa = /*/*/0*/**/1; //strcpy(szTest, szFileName); //OUT_OUT("%s, %d/n", __FILE__, __LINE__); //assert_user_define(0); printf("%s", aaa->GetName(aaa->this));printf("/n"); printf("%d", aaa->GetAge(aaa->this));printf("/n"); printf("%s", aaa->GetSex(aaa->this));printf("/n"); //printf(GetName(CClassTest_Initial_Param("xxx", 11, "1111"))); CClassTest_Destroy(aaa); print_tokens(dddddddddd); //CClassTest *pointer = CClassTest_Initial(); /* /**/ /* if (ChainQueue_is_empty()) printf("Empty/n"); ChainQueue_create_queue(); for (i = 0; i < 10; i++) { printf("Insert: %d/n", i); ChainQueue_insert(i); } if (!ChainQueue_is_empty()) printf("Not Empty/n"); //ChainQueue_destroy_queue(); for (i = 0; i < 10; i++) { printf("delete: %d/n", ChainQueue_first()); ChainQueue_delete(); } if (ChainQueue_is_empty()) printf("Empty/n"); */ /* ChainStack_create_stack(); for (i = 0; i < 10; i++) { ChainStack_push(i); } ChainStack_destroy_stack(); */ /* DynamicArrayQueue_create_queue(10); { if (DynamicArrayQueue_is_empty()) { printf("Empty/n"); } for (i = 0; i < 10; i++) { DynamicArrayQueue_insert(1); } if (DynamicArrayQueue_is_full()) { printf("Full/n"); } } DynamicArrayQueue_destroy_queue(); */ /* DynamicArrayStack_create_stack(100); for (i = 0; i < 10; i++) { DynamicArrayStack_push((int)i); printf("DynamicArrayStack_push: %d/n", i); } for (i = 0; i < 10; i++) { printf("DynamicArrayStack_pop : %d/n", DynamicArrayStack_top()); DynamicArrayStack_pop(); } DynamicArrayStack_destroy_stack(); */ /* for (i = 0; i< 1000; i++) { WriteLog(szFileName, "这里为日志内容!"); } */ /* for (i = 0; i < 10; i++) { StaticArrayQueue_insert((int)i); printf("StaticArrayQueue_insert: %d/n", i); } for (i = 0; i < 10; i++) { printf("StaticArrayQueue_delete: %d/n", StaticArrayQueue_first()); StaticArrayQueue_delete(); } */ /* for (i = 0; i < 10; i++) { StaticArrayStack_push((int)i); printf("StaticArrayStack_push: %d/n", i); } for (i = 0; i < 10; i++) { printf("StaticArrayStack_pop: %d/n", StaticArrayStack_top()); StaticArrayStack_pop(); } */ return EXIT_SUCCESS; }