[C/C++]函数指针和函数分发表

简介:   // console.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include using namespace std; typedef unsigned char UCHAR; int FunA(); int ...

 

 

// console.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
using namespace std;

typedef unsigned char UCHAR;
int FunA();
int FunB();
int FunC();

typedef enum tagMsgType
{
    MSG_TYPE_A = 1,
    MSG_TYPE_B,
    MSG_TYPE_C
};

typedef int (*MSG_PROC_FUNC)();

typedef struct tagMsgDispatchTbl
{
    UCHAR ucMsgType;
    MSG_PROC_FUNC pFuc;
} MsgDispatchTbl;

MsgDispatchTbl g_astDispatchTbl[] = 
{
    {MSG_TYPE_A, FunA},
    {MSG_TYPE_B, FunB},
    {MSG_TYPE_C, FunC},
};

int FunA()
{
    printf("Call FunA\r\n");
    return 0;
}

int FunB()
{
    printf("Call FunB\r\n");
    return 0;
}

int FunC()
{
    printf("Call FunC\r\n");
    return 0;
}

int _tmain(int argc, _TCHAR* argv[])
{
    int i = 1;
    int iRet = 0;
    UCHAR ucMsgType = MSG_TYPE_B;
    UCHAR aucStr[1024] = {0};
    MSG_PROC_FUNC pFunc;
    for (i = 1; i < 4; i++)
    {
        if (ucMsgType == g_astDispatchTbl[i].ucMsgType)
        {
            pFunc = g_astDispatchTbl[i].pFuc;
            pFunc();
        }
        
    }
    return 0;
}

 

目录
相关文章
|
6月前
|
C语言
【C语言】函数实参与形参详解
【C语言】函数实参与形参详解
191 0
|
程序员
学C的第九天(深入学习函数:库函数、自定义函数、函数的参数、函数调用、练习、补充知识点)-2
5.5:练习(部分上一期做过,换成函数做法): (1).写一个函数可以判断一个数是不是素数:
|
存储 C语言
《C和指针》读书笔记(第十章 结构和联合)(下)
《C和指针》读书笔记(第十章 结构和联合)(下)
|
存储 C语言 C++
《C和指针》读书笔记(第十章 结构和联合)(上)
《C和指针》读书笔记(第十章 结构和联合)(上)
|
存储 程序员 vr&ar
函数、数组和函数(C Primer Plus第六版)
函数、数组和函数(C Primer Plus第六版)
103 0
|
索引
指针如何使用形参?(C Primer Plus第六版)
指针如何使用形参?(C Primer Plus第六版)
78 0
|
Android开发 C++ 开发者
重温C与C++之结构体大小计算
C++进阶之结构体大小计算
119 0
|
存储 编译器 程序员
爱上c++的第一天:内存存储模型,引用和函数方面的知识
在运行的时候调用程序分配内存可以在任何时候决定分配内存即分配的大小,用户自行决定在何时释放。堆中的所有东西都是匿名的,不能用名字访问,只能通过指针来访问。
172 0
爱上c++的第一天:内存存储模型,引用和函数方面的知识
|
Java C语言
函数实参与形参的区别
函数实参与形参的区别
189 0
函数实参与形参的区别
值传递与引用传递区别——配套习题-形参与实参(理论解析)
值传递与引用传递区别——配套习题-形参与实参(理论解析)
94 0
值传递与引用传递区别——配套习题-形参与实参(理论解析)