-
-
[分享]函数指针设计
-
发表于:
2021-4-19 21:40
3070
-
函数指针:
typedef void (*PFN_SHOW)(); //定义一个函数指针
static PFN_SHOW pfnAry[100] = {0};//保存函数指针的数组
static int g_nPfnAryIndex = 0;//函数指针的下标
int InitFun(PFN_SHOW pfun){pfnAry[++g_nPfnAryIndex] = pfun; return g_nPfnAryIndex;} //把增加的函数添加到函数指针数组里
#define NEWFUN(name) void show_##name (){printf(#name);printf("\r\n");} //输出函数 替换成 NEWFUN(name)
#define ADDFUN(name) NEWFUN(name) int g##name = InitFun(&show_##name); // Add函数
ADD_FUN(hello)
ADD_FUN(word)
ADD_FUN(cpp)
ADD_FUN(asm)
int main(int argc, char* argv[])
{
int n = 0;
while(1)
{
scanf("%d",&n);
if(n > 0 && n < 100 && pfnAry[n])
{
pfnAryn;
}
}
system("pause");
return 0;
}
宏替换后变成了这样:
typedef void (PFN_SHOW)();
static PFN_SHOW pfnAry[100] = {0};
static int g_nPfnAryIndex = 0;
int InitFun(PFN_SHOW pfun)
{
pfnAry[++g_nPfnAryIndex] = pfun;
return g_nPfnAryIndex;
}
void show_hello ()
{
printf("hello");
printf("\r\n");
}
int g_hello = InitFun(&show_hello);
void show_word (){printf("word");printf("\r\n");} int g_word = InitFun(&show_word);
void show_cpp (){printf("cpp");printf("\r\n");} int g_cpp = InitFun(&show_cpp);
void show_asm (){printf("asm");printf("\r\n");} int g_asm = InitFun(&show_asm);
int main(int argc, char argv[])
{
int n = 0;
while(1)
{
scanf("%d",&n);
if(n > 0 && n < 100 && pfnAry[n])
{
pfnAryn;
}
}
system("pause");
return 0;
}
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)