打印

哪位能解释一下,程序中的typedef是怎么用的吗

[复制链接]
2322|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sxggj|  楼主 | 2009-3-10 14:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
int sys_init(struct system_table_struct *system_table, unsigned long rom_base, unsigned long dram_base)
{
    typedef int (SYSINIT)(struct system_table_struct *, unsigned long, unsigned long);
    SYSINIT *sys_init_ptr;

    memcpy((char *)SRAM_BASE, sysinit_data, 1024 * 3);
    sys_init_ptr = (SYSINIT *)SRAM_BASE;
    sys_init_ptr(system_table, rom_base, dram_base);

    return 0;
}

相关帖子

沙发
HWM| | 2009-3-10 14:16 | 只看该作者

定义一个类型,此处为一函数类型。

使用特权

评论回复
板凳
sxggj|  楼主 | 2009-3-10 14:33 | 只看该作者

谢谢

(SYSINIT)(struct system_table_struct *, unsigned long, unsigned long)=================================================================
SYSINIT(struct system_table_struct *, unsigned long, unsigned long)
{

}
是这么回事吗,依据是什么,我查书的哪一部分,可以找到这个等式成立的依据

使用特权

评论回复
地板
sxggj|  楼主 | 2009-3-10 15:11 | 只看该作者

baidu到的东西

如果我们碰到复杂的类型声明,该如何解析它?例如: 
char (*a[3])(int); 
a到底被声明为什么东东?指针?数组?还是函数? 
分析时,从a 最接近(按运算符优先级)处开始。我们看到a最接近符号是[ ]——注意:*比[ ]的优先级低。a后既然有[ ],那么a是数组,而且是包含3个元素的数组。 
那这个数组的每个元素是什么类型呢?虽然数组a只含有a[0]、a[1]、a[2]三个元素,a[3]实际上已经越界,但在分析数组a的元素的类型时,我们正好需要形式上的元素a[3]。知道了a[3]的类型,就知道了a的元素的类型。 a[3]是什么类型?是指针,因为它的前面有*. 由此可知,数组a的元素是指针。 
光说是指针还不够。对于指针,必须说出它指向的东东是什么类型。它指向的东东是什么,就看*a[3]是什么(a[3]是指针,它指向的东东当然是*a[3])了。继续按优先级观察,我们看到*a[3]后面有小括号,所以可以肯定*a[3]是函数。即数组a的元素是指向函数的指针。 
指向的是什么类型的函数?这很明显,是入参为int、返回值为char的类型的函数。 
至此解析完毕。 
按上述方法,再复杂的也可以一步步解析出来。 

就像习武不是为了打人而是为了防身一样,我们了解上述方法是为了看懂别人写的复杂声明,而不是为了在实践中自己去构造这种复杂的东东。实在需要复杂声明时,可以用typedef替代一部分。例如上面语句可改成两句: 
typedef char (*FUN_PTR)(int); 
FUN_PTR a[3]; 
这样就清晰多了。 
此外,上面的分析方法还让我们对某些东西的本质更加清楚。比如,n维数组的本质都是一维数组。看个具体的例子: 
int a[3][5]; 
这句声明的是一个包含3个元素的一维数组,其每个元素又是一个由5个int数构成的数组。我们不能理解为:a是一个包含5个元素的一维数组,其每个元素又是一个由3个int数构成的数组。为什么?还是按上面的方法分析,这里从略。 

有的书上或网上提供"向右看,向左看"的方法, 其实缺乏通用性, 比如它不适用于对多维数组本质的分析. 而且这种方法掩盖了本质. 本质应该是按上面所讲的,根据运算符优先级逐层剥开. 

使用特权

评论回复
5
HWM| | 2009-3-10 15:59 | 只看该作者

函数类型的典型写法:

ret-type (func-type)(parameters-type-list)

其中 ret-type 为返回数据类型,parameters-type-list 为参数类型表,而func-type 便就是你要定义的那个函数类型名。

若用

typedef ret-type (func-type)(parameters-type-list);

便定义了一个名为func-type的函数类型

而若用

typedef ret-type (* pfunc-type)(parameters-type-list);

则定义了一个指向类型为ret-type (*)(parameters-type-list)的函数指针

其相应的类型如何事例化为:

func-type *pFunc;



pfunc-type pFunc;

其中pFunc为一指向相应函数类型的函数指针。

使用特权

评论回复
6
sxggj|  楼主 | 2009-3-10 16:40 | 只看该作者

非常感谢,不过更糊涂了

我之前以为,函数返回值类型,就是函数的类型,是错了吗?

ret-type (func-type)(parameters-type-list),,按照函数声明或者函数定义的格式,(func-type)这个地方不应该是函数名吗?
难道函数名就是函数类型??

使用特权

评论回复
7
HWM| | 2009-3-10 16:46 | 只看该作者

这里(func-type)是“类型”,而非函数名(函数名是实体名

返回类型只是函数接口的组成部分,因此不能代表函数类型。

ret-type (*)(parameters-type-list) 是一个特殊的类型定义形式,专用于函数。

使用特权

评论回复
8
sxggj|  楼主 | 2009-3-10 17:18 | 只看该作者

再谢,总算明白了函数类型与函数名的区别

还有个问题:关于5楼的这句话typedef ret-type (* pfunc-type)(parameters-type-list);  如你所说,这句话中typedef的用法与通常的typedef的用法不一样了?  我记得在C语言中typedef arg1 arg2是用来创造一个arg2类型,使它等效于arg1,在这儿是个特殊应用???

使用特权

评论回复
9
HWM| | 2009-3-10 17:25 | 只看该作者

呵呵,确实有点“非典型”,那类型名嵌入其中了。


使用特权

评论回复
10
sxggj|  楼主 | 2009-3-10 17:37 | 只看该作者

太感谢了!!用个成语来形容您----不辞辛苦

也就是说typedef int (SYSINIT)(.......)======typedef int ()(.......) SYSINIT

使用特权

评论回复
11
hedy007| | 2009-3-10 19:57 | 只看该作者

不等效,你就简单的理解成替换就可以了。

使用特权

评论回复
12
HotC51| | 2009-3-11 06:45 | 只看该作者

还不配“非典型”~~~

/*----------------------------------------------------------------------------
        HotC51宏汇编数组定义头文件(hotmacro.h V1.09)
最初建立时间: 2009.2.18 
最近修改时间: 2009.3.10
增  添原  因: 为全面支持裸奔式实时操作系统HotTask51做准备
              hotmacro.h宣告“宏C”计划开始, 
              支持Keil C51带参数输入输出的"汇编数组之过程与函数"。
              HotC51使用宏汇编数组可以方便地与Keil C51“通讯”
应        用: 可以用COM接口技术对HotC51汇编数组进行封装
            macro_Function_Arg3 (CRCR8, macro_U8_arg1, macro_U8_arg2, macro_U8_arg3)
            {
            #define CRCR8_LOOP -15
            #define CRCR8_NEXT size_XRL_A_Rn()
                asm_MOV_B(8),//设置8位计数器
            //CRCR8_LOOP:
                asm_MOV_A_Rn(macro_U8_arg3),//取明文
                asm_XRL_A_Rn(macro_U8_arg1),//异或初值
                asm_RRC_A(),//右移CRC8一位,注意ACC.0移入CY
                asm_MOV_A_Rn(macro_U8_arg1),//再取初值
                asm_JNC(CRCR8_NEXT),//CY为0不异或权,跳过下句
                asm_XRL_A_Rn(macro_U8_arg2),//异或权
            //CRC8R_NEXT:
                asm_RRC_A(),//将CY移入ACC.7
                asm_MOV_Rn_A(macro_U8_arg1),//保存本次结果
                asm_MOV_A_Rn(macro_U8_arg3),//再取明文
                asm_RR_A(),//准备下一位
                asm_MOV_Rn_A(macro_U8_arg3),//保存明文,注意已改变
                asm_DJNZ_B(CRCR8_LOOP),//未完继续到CRCR8_LOOP
                macro_return(),
            };
未  来计  划: 首先将HotC51汇编数组做成比宏汇编更好用的接近C习惯.
              逐步完善,最终全面到达“宏C”之目标。
菜农HotPower@126.com 2008.3.10 18:58 于西安大雁塔村农会
-----------------------------------------------------------------------------*/
#ifndef __HOTMACRO_H__
#define __HOTMACRO_H__
#ifdef __cplusplus
extern "C"
{
#endif

#include "hotregx52.h"
#include "hotasm.h"
#include "hottask51.h"

/*--------------------------------------------
    汇编数组定义
--------------------------------------------*/
typedef code const unsigned char HotASM_ARRAY;//类型定义
/*--------------------------------------------
    汇编数组"函数"支持8/16/32为的C51函数
--------------------------------------------*/

#define HotASM(name) HotASM_ARRAY(name)[]=
#define define_HotASM(name) HotASM_ARRAY(name)[]
#define extern_HotASM(name) extern HotASM_ARRAY(name)[]

/*
#define HotASM(name) HotASM_ARRAY name[]=
#define define_HotASM(name) HotASM_ARRAY name[]
#define extern_HotASM(name) extern HotASM_ARRAY name[]
*/
/*--------------------------------------------
    汇编数组"函数"返回类型
--------------------------------------------*/
#define macro_U8_Result        HotASM_R7//
#define macro_U16_Result    HotASM_R6R7//MSB in R6, LSB in R7
#define macro_U32_Result    HotASM_R4R7//MSB in R4, LSB in R7
#define macro_Float_Result    HotASM_R4R7//32-Bit IEEE format
#define macro_Ptr_Result    HotASM_R3_R2R1//Memory type in R3, MSB R2, LSB R1
#define macro_P8_Result        HotASM_R3_R2R1//Memory type in R3, MSB R2, LSB R1
#define macro_P16_Result    HotASM_R3_R2R1//Memory type in R3, MSB R2, LSB R1
#define macro_P32_Result    HotASM_R3_R2R1//Memory type in R3, MSB R2, LSB R1

#define macro_U16H_Result    HotASM_R6
#define macro_U16L_Result    HotASM_R7

#define macro_U32HH_Result    HotASM_R4
#define macro_U32HL_Result    HotASM_R5
#define macro_U32LH_Result    HotASM_R6
#define macro_U32LL_Result    HotASM_R7

/*--------------------------------------------
    汇编数组"函数"入口参数(函数调用规则)
--------------------------------------------*/
#define HotASM_R6R7                HotASM_R6//大端排列
#define HotASM_R4R5                HotASM_R4//大端排列
#define HotASM_R2R3                HotASM_R2//大端排列
#define HotASM_R2R1                HotASM_R2//小端排列

#define macro_U8_arg1            HotASM_R7
#define macro_U8_arg2            HotASM_R5
#define macro_U8_arg3            HotASM_R3

#define macro_U16_arg1            HotASM_R6R7//MSB in R6, LSB in R7
#define macro_U16_arg2            HotASM_R4R5//MSB in R4, LSB in R5
#define macro_U16_arg3            HotASM_R2R3//MSB in R2, LSB in R3

#define macro_U16H_arg1            HotASM_R6
#define macro_U16L_arg1            HotASM_R7

#define macro_U16H_arg2            HotASM_R4
#define macro_U16L_arg2            HotASM_R5

#define macro_U16H_arg3            HotASM_R2
#define macro_U16L_arg3            HotASM_R3

#define macro_U32_arg1            HotASM_R4R7//MSB in R4, LSB in R7
#define macro_U32_arg2            HotASM_R4R7//MSB in R4, LSB in R7

#define macro_U32HH_arg1        HotASM_R4
#define macro_U32HL_arg1        HotASM_R5
#define macro_U32LH_arg1        HotASM_R6
#define macro_U32LL_arg1        HotASM_R7

#define macro_U32HH_arg2        HotASM_R4
#define macro_U32HL_arg2        HotASM_R5
#define macro_U32LH_arg2        HotASM_R6
#define macro_U32LL_arg2        HotASM_R7

#define macro_U32HH_arg3        HotASM_R4
#define macro_U32HL_arg3        HotASM_R5
#define macro_U32LH_arg3        HotASM_R6
#define macro_U32LL_arg3        HotASM_R7


#define macro_Float_arg1        HotASM_R4R7
#define macro_Float_arg2        HotASM_R4R7

#define macro_Ptr_arg1            HotASM_R3_R2R1//Memory type in R3, MSB R2, LSB R1
#define macro_Ptr_arg2            HotASM_R3_R2R1//Memory type in R3, MSB R2, LSB R1
#define macro_Ptr_arg3            HotASM_R3_R2R1//Memory type in R3, MSB R2, LSB R1

#define macro_P8_arg1            HotASM_R3_R2R1//Memory type in R3, MSB R2, LSB R1
#define macro_P8_arg2            HotASM_R3_R2R1//Memory type in R3, MSB R2, LSB R1
#define macro_P8_arg3            HotASM_R3_R2R1//Memory type in R3, MSB R2, LSB R1

#define macro_P16_arg1            HotASM_R3_R2R1//Memory type in R3, MSB R2, LSB R1
#define macro_P16_arg2            HotASM_R3_R2R1//Memory type in R3, MSB R2, LSB R1
#define macro_P16_arg3            HotASM_R3_R2R1//Memory type in R3, MSB R2, LSB R1

#define macro_P32_arg1            HotASM_R3_R2R1//Memory type in R3, MSB R2, LSB R1
#define macro_P32_arg2            HotASM_R3_R2R1//Memory type in R3, MSB R2, LSB R1
#define macro_P32_arg3            HotASM_R3_R2R1//Memory type in R3, MSB R2, LSB R1

#define size_MOV_A_U8ARG1()        size_MOV_A_Rn()
#define size_MOV_A_U8ARG2()        size_MOV_A_Rn()
#define size_MOV_A_U8ARG3()        size_MOV_A_Rn()

#define    asm_MOV_A_U8ARG1()        asm_MOV_A_Rn(macro_U8_arg1)
#define    asm_MOV_A_U8ARG2()        asm_MOV_A_Rn(macro_U8_arg2)
#define    asm_MOV_A_U8ARG3()        asm_MOV_A_Rn(macro_U8_arg3)

#define size_MOV_AB_U16ARG1()    size_MOV_AB_Rn()
#define size_MOV_AB_U16ARG2()    size_MOV_AB_Rn()
#define size_MOV_AB_U16ARG3()    size_MOV_AB_Rn()

#define    asm_MOV_AB_U16ARG1()    asm_MOV_AB_Rn(macro_U16_arg1)
#define    asm_MOV_AB_U16ARG2()    asm_MOV_AB_Rn(macro_U16_arg2)
#define    asm_MOV_AB_U16ARG3()    asm_MOV_AB_Rn(macro_U16_arg3)

#define size_MOV_BA_U16ARG1()    size_MOV_BA_Rn()
#define size_MOV_BA_U16ARG2()    size_MOV_BA_Rn()
#define size_MOV_BA_U16ARG3()    size_MOV_BA_Rn()

#define    asm_MOV_BA_U16ARG1()    asm_MOV_BA_Rn(macro_U16_arg1)
#define    asm_MOV_BA_U16ARG2()    asm_MOV_BA_Rn(macro_U16_arg2)
#define    asm_MOV_BA_U16ARG3()    asm_MOV_BA_Rn(macro_U16_arg3)

#define size_MOV_U8RESULT_A()    size_MOV_Rn_A()
#define    asm_MOV_U8RESULT_A()    asm_MOV_Rn_A(macro_U8_Result)

#define size_RET_U8RESULT_A()    size_MOV_U8RESULT_A() + size_RET()
#define asm_RET_U8RESULT_A()    asm_MOV_U8RESULT_A(), asm_RET()



#define size_RET_U16RESULT_AB()    size_MOV_U16RESULT_AB() + size_RET()
#define asm_RET_U16RESULT_AB()  asm_MOV_U16RESULT_AB(), asm_RET()

#define size_MOV_U16RESULT_AB()    size_MOV_Rn_AB()
#define size_MOV_U16RESULT_BA()    size_MOV_Rn_BA()


#define size_RET_U16RESULT_BA()    size_MOV_U16RESULT_BA() + size_RET()
#define asm_RET_U16RESULT_BA()  asm_MOV_U16RESULT_BA(), asm_RET()

#define    asm_MOV_U16RESULT_AB()    asm_MOV_Rn_AB(macro_U16_Result)
#define    asm_MOV_U16RESULT_BA()    asm_MOV_Rn_BA(macro_U16_Result)


/*--------------------------------------------
    汇编数组"宏C"定义
--------------------------------------------*/
#define size_nop()            size_NOP
#define macro_nop()            asm_NOP()

#define extern_Procedure(name)     extern_HotASM(name)
#define define_Procedure(name)     define_HotASM(name)
#define macro_Procedure(name)     define_HotASM(name);HotASM(name)

#define extern_Procedure_Arg1(name, arg1)     extern_HotASM(name)
#define define_Procedure_Arg1(name, arg1)     define_HotASM(name)
#define macro_Procedure_Arg1(name, arg1)     define_HotASM(name);HotASM(name)

#define extern_Procedure_Arg2(name, arg1, arg2)     extern_HotASM(name)
#define define_Procedure_Arg2(name, arg1, arg2)     define_HotASM(name)
#define macro_Procedure_Arg2(name, arg1, arg2) define_HotASM(name);HotASM(name)

#define extern_Procedure_Arg3(name, arg1, arg2, arg3)     extern_HotASM(name)
#define define_Procedure_Arg3(name, arg1, arg2, arg3)     define_HotASM(name)
#define macro_Procedure_Arg3(name, arg1, arg2, arg3) define_HotASM(name);HotASM(name)


#define extern_Function(name)     extern_HotASM(name)
#define define_Function(name)     define_HotASM(name)
#define macro_Function(name)     define_HotASM(name);HotASM(name)

#define extern_Function_Arg1(name, arg1)     extern_HotASM(name)
#define define_Function_Arg1(name, arg1)     define_HotASM(name)
#define macro_Function_Arg1(name, arg1)     define_HotASM(name);HotASM(name)

#define extern_Function_Arg2(name, arg1, arg2)     extern_HotASM(name)
#define define_Function_Arg2(name, arg1, arg2)     define_HotASM(name)
#define macro_Function_Arg2(name, arg1, arg2)     define_HotASM(name);HotASM(name)

#define extern_Function_Arg3(name, arg1, arg2, arg3)     extern_HotASM(name)
#define define_Function_Arg3(name, arg1, arg2, arg3)     define_HotASM(name)
#define macro_Function_Arg3(name, arg1, arg2, arg3)     define_HotASM(name);HotASM(name)

/*-----------------------------------------------------------------------------------------------------*/

#define size_return()            size_RET
#define macro_return()           asm_RET()

#define size_isr_return()        size_RETI
#define macro_isr_return()       asm_RETI()

#define size_returnU8_A()        size_RET_U8RESULT_A
#define macro_returnU8_A()       asm_RET_U8RESULT_A()

#define size_returnU16_AB()        size_RET_U16RESULT_AB
#define macro_returnU16_AB()       asm_RET_U16RESULT_AB()

#define size_returnU16_BA()        size_RET_U16RESULT_BA
#define macro_returnU16_BA()       asm_RET_U16RESULT_BA()



/*----------------------------------------------------------------------------------
    103个过程指针
----------------------------------------------------------------------------------*/
typedef void (*pMacro_Procedure)(void);//过程指针
typedef void (*pMacro_Procedure_U8)(unsigned char);//过程指针
typedef void (*pMacro_Procedure_P8)(unsigned char*);//过程指针

typedef void (*pMacro_Procedure_U8U8)(unsigned char, unsigned char);//过程指针
typedef void (*pMacro_Procedure_U8P8)(unsigned char, unsigned char*);//过程指针
typedef void (*pMacro_Procedure_P8U8)(unsigned char*, unsigned char);//过程指针
typedef void (*pMacro_Procedure_P8P8)(unsigned char*, unsigned char*);//过程指针

typedef void (*pMacro_Procedure_U8U16)(unsigned char, unsigned int);//过程指针
typedef void (*pMacro_Procedure_U8P16)(unsigned char, unsigned int*);//过程指针
typedef void (*pMacro_Procedure_P8U16)(unsigned char*, unsigned int);//过程指针
typedef void (*pMacro_Procedure_P8P16)(unsigned char*, unsigned int*);//过程指针

typedef void (*pMacro_Procedure_U16)(unsigned int);//过程指针
typedef void (*pMacro_Procedure_P16)(unsigned int*);//过程指针

typedef void (*pMacro_Procedure_U16U8)(unsigned int, unsigned char);//过程指针
typedef void (*pMacro_Procedure_U16P8)(unsigned int, unsigned char*);//过程指针
typedef void (*pMacro_Procedure_P16U8)(unsigned int*, unsigned char);//过程指针
typedef void (*pMacro_Procedure_P16P8)(unsigned int*, unsigned char*);//过程指针

typedef void (*pMacro_Procedure_U16U16)(unsigned int, unsigned int);//过程指针
typedef void (*pMacro_Procedure_U16P16)(unsigned int, unsigned int*);//过程指针
typedef void (*pMacro_Procedure_P16U16)(unsigned int*, unsigned int);//过程指针
typedef void (*pMacro_Procedure_P16P16)(unsigned int*, unsigned int*);//过程指针

typedef void (*pMacro_Procedure_U16U32)(unsigned int, unsigned long);//过程指针
typedef void (*pMacro_Procedure_U16P32)(unsigned int, unsigned long*);//过程指针
typedef void (*pMacro_Procedure_P16U32)(unsigned int*, unsigned long);//过程指针
typedef void (*pMacro_Procedure_P16P32)(unsigned int*, unsigned long*);//过程指针

typedef void (*pMacro_Procedure_U32)(unsigned long);//过程指针
typedef void (*pMacro_Procedure_P32)(unsigned long*);//过程指针

typedef void (*pMacro_Procedure_U32U8)(unsigned long, unsigned char);//过程指针
typedef void (*pMacro_Procedure_U32P8)(unsigned long, unsigned char*);//过程指针
typedef void (*pMacro_Procedure_P32U8)(unsigned long*, unsigned char);//过程指针
typedef void (*pMacro_Procedure_P32P8)(unsigned long*, unsigned char*);//过程指针

typedef void (*pMacro_Procedure_U32U16)(unsigned long, unsigned int);//过程指针
typedef void (*pMacro_Procedure_U32P16)(unsigned long, unsigned int*);//过程指针
typedef void (*pMacro_Procedure_P32U16)(unsigned long*, unsigned int);//过程指针
typedef void (*pMacro_Procedure_P32P16)(unsigned long*, unsigned int*);//过程指针

typedef void (*pMacro_Procedure_U32U32)(unsigned long, unsigned long);//过程指针
typedef void (*pMacro_Procedure_U32P32)(unsigned long, unsigned long*);//过程指针
typedef void (*pMacro_Procedure_P32U32)(unsigned long*, unsigned long);//过程指针
typedef void (*pMacro_Procedure_P32P32)(unsigned long*, unsigned long*);//过程指针

typedef void (*pMacro_Procedure_U8U8U8)(unsigned char, unsigned char, unsigned char);//过程指针
typedef void (*pMacro_Procedure_U8U8P8)(unsigned char, unsigned char, unsigned char*);//过程指针
typedef void (*pMacro_Procedure_U8P8U8)(unsigned char, unsigned char*, unsigned char);//过程指针
typedef void (*pMacro_Procedure_U8P8P8)(unsigned char, unsigned char*, unsigned char*);//过程指针
typedef void (*pMacro_Procedure_P8U8U8)(unsigned char*, unsigned char, unsigned char);//过程指针
typedef void (*pMacro_Procedure_P8U8P8)(unsigned char*, unsigned char, unsigned char*);//过程指针
typedef void (*pMacro_Procedure_P8P8U8)(unsigned char*, unsigned char*, unsigned char);//过程指针
typedef void (*pMacro_Procedure_P8P8P8)(unsigned char*, unsigned char*, unsigned char*);//过程指针


typedef void (*pMacro_Procedure_U8U8U16)(unsigned char, unsigned char, unsigned int);//过程指针
typedef void (*pMacro_Procedure_U8U8P16)(unsigned char, unsigned char, unsigned int*);//过程指针
typedef void (*pMacro_Procedure_U8P8U16)(unsigned char, unsigned char*, unsigned int);//过程指针
typedef void (*pMacro_Procedure_U8P8P16)(unsigned char, unsigned char*, unsigned int*);//过程指针
typedef void (*pMacro_Procedure_P8U8U16)(unsigned char*, unsigned char, unsigned int);//过程指针
typedef void (*pMacro_Procedure_P8U8P16)(unsigned char*, unsigned char, unsigned int*);//过程指针
typedef void (*pMacro_Procedure_P8P8U16)(unsigned char*, unsigned char*, unsigned int);//过程指针
typedef void (*pMacro_Procedure_P8P8P16)(unsigned char*, unsigned char*, unsigned int*);//过程指针

typedef void (*pMacro_Procedure_U8U16U8)(unsigned char, unsigned int, unsigned char);//过程指针
typedef void (*pMacro_Procedure_U8U16P8)(unsigned char, unsigned int, unsigned char*);//过程指针
typedef void (*pMacro_Procedure_U8P16U8)(unsigned char, unsigned int*, unsigned char);//过程指针
typedef void (*pMacro_Procedure_U8P16P8)(unsigned char, unsigned int*, unsigned char*);//过程指针
typedef void (*pMacro_Procedure_P8U16U8)(unsigned char*, unsigned int, unsigned char);//过程指针
typedef void (*pMacro_Procedure_P8U16P8)(unsigned char*, unsigned int, unsigned char*);//过程指针
typedef void (*pMacro_Procedure_P8P16U8)(unsigned char*, unsigned int*, unsigned char);//过程指针
typedef void (*pMacro_Procedure_P8P16P8)(unsigned char*, unsigned int*, unsigned char*);//过程指针

typedef void (*pMacro_Procedure_U8U16U16)(unsigned char, unsigned int, unsigned int);//过程指针
typedef void (*pMacro_Procedure_U8U16P16)(unsigned char, unsigned int, unsigned int*);//过程指针
typedef void (*pMacro_Procedure_U8P16U16)(unsigned char, unsigned int*, unsigned int);//过程指针
typedef void (*pMacro_Procedure_U8P16P16)(unsigned char, unsigned int*, unsigned int*);//过程指针
typedef void (*pMacro_Procedure_P8U16U16)(unsigned char*, unsigned int, unsigned int);//过程指针
typedef void (*pMacro_Procedure_P8U16P16)(unsigned char*, unsigned int, unsigned int*);//过程指针
typedef void (*pMacro_Procedure_P8P16U16)(unsigned char*, unsigned int*, unsigned int);//过程指针
typedef void (*pMacro_Procedure_P8P16P16)(unsigned char*, unsigned int*, unsigned int*);//过程指针

typedef void (*pMacro_Procedure_U16U8U8)(unsigned int, unsigned char, unsigned char);//过程指针
typedef void (*pMacro_Procedure_U16U8P8)(unsigned int, unsigned char, unsigned char*);//过程指针
typedef void (*pMacro_Procedure_U16P8U8)(unsigned int, unsigned char*, unsigned char);//过程指针
typedef void (*pMacro_Procedure_U16P8P8)(unsigned int, unsigned char*, unsigned char*);//过程指针
typedef void (*pMacro_Procedure_P16U8U8)(unsigned int*, unsigned char, unsigned char);//过程指针
typedef void (*pMacro_Procedure_P16U8P8)(unsigned int*, unsigned char, unsigned char*);//过程指针
typedef void (*pMacro_Procedure_P16P8U8)(unsigned int*, unsigned char*, unsigned char);//过程指针
typedef void (*pMacro_Procedure_P16P8P8)(unsigned int*, unsigned char*, unsigned char*);//过程指针

typedef void (*pMacro_Procedure_U16U8U16)(unsigned int, unsigned char, unsigned int);//过程指针
typedef void (*pMacro_Procedure_U16U8P16)(unsigned int, unsigned char, unsigned int*);//过程指针
typedef void (*pMacro_Procedure_U16P8U16)(unsigned int, unsigned char*, unsigned int);//过程指针
typedef void (*pMacro_Procedure_U16P8P16)(unsigned int, unsigned char*, unsigned int*);//过程指针
typedef void (*pMacro_Procedure_P16U8U16)(unsigned int*, unsigned char, unsigned int);//过程指针
typedef void (*pMacro_Procedure_P16U8P16)(unsigned int*, unsigned char, unsigned int*);//过程指针
typedef void (*pMacro_Procedure_P16P8U16)(unsigned int*, unsigned char*, unsigned int);//过程指针
typedef void (*pMacro_Procedure_P16P8P16)(unsigned int*, unsigned char*, unsigned int*);//过程指针

typedef void (*pMacro_Procedure_U16U16U8)(unsigned int, unsigned int, unsigned char);//过程指针
typedef void (*pMacro_Procedure_U16U16P8)(unsigned int, unsigned int, unsigned char*);//过程指针
typedef void (*pMacro_Procedure_U16P16U8)(unsigned int, unsigned int*, unsigned char);//过程指针
typedef void (*pMacro_Procedure_U16P16P8)(unsigned int, unsigned int*, unsigned char*);//过程指针
typedef void (*pMacro_Procedure_P16U16U8)(unsigned int*, unsigned int, unsigned char);//过程指针
typedef void (*pMacro_Procedure_P16U16P8)(unsigned int*, unsigned int, unsigned char*);//过程指针
typedef void (*pMacro_Procedure_P16P16U8)(unsigned int*, unsigned int*, unsigned char);//过程指针
typedef void (*pMacro_Procedure_P16P16P8)(unsigned int*, unsigned int*, unsigned char*);//过程指针

typedef void (*pMacro_Procedure_U16U16U16)(unsigned int, unsigned int, unsigned int);//过程指针
typedef void (*pMacro_Procedure_U16U16P16)(unsigned int, unsigned int, unsigned int*);//过程指针
typedef void (*pMacro_Procedure_U16P16U16)(unsigned int, unsigned int*, unsigned int);//过程指针
typedef void (*pMacro_Procedure_U16P16P16)(unsigned int, unsigned int*, unsigned int*);//过程指针
typedef void (*pMacro_Procedure_P16U16U16)(unsigned int*, unsigned int, unsigned int);//过程指针
typedef void (*pMacro_Procedure_P16U16P16)(unsigned int*, unsigned int, unsigned int*);//过程指针
typedef void (*pMacro_Procedure_P16P16U16)(unsigned int*, unsigned int*, unsigned int);//过程指针
typedef void (*pMacro_Procedure_P16P16P16)(unsigned int*, unsigned int*, unsigned int*);//过程指针

/*----------------------------------------------------------------------------------
    函数指针
----------------------------------------------------------------------------------*/

typedef unsigned char (*pMacro_FunctionU8)(void);//函数指针
typedef unsigned char* (*pMacro_FunctionP8)(void);//函数指针

typedef unsigned char (*pMacro_FunctionU8_U8)(unsigned char);//函数指针
typedef unsigned char (*pMacro_FunctionU8_P8)(unsigned char*);//函数指针

typedef unsigned char* (*pMacro_FunctionP8_U8)(unsigned char);//函数指针
typedef unsigned char* (*pMacro_FunctionP8_P8)(unsigned char*);//函数指针

typedef unsigned char (*pMacro_FunctionU8_U8U8)(unsigned char, unsigned char);//函数指针
typedef unsigned char (*pMacro_FunctionU8_U8P8)(unsigned char, unsigned char*);//函数指针
typedef unsigned char (*pMacro_FunctionU8_P8U8)(unsigned char*, unsigned char);//函数指针
typedef unsigned char (*pMacro_FunctionU8_P8P8)(unsigned char*, unsigned char*);//函数指针

typedef unsigned char* (*pMacro_FunctionP8_U8U8)(unsigned char, unsigned char);//函数指针
typedef unsigned char* (*pMacro_FunctionP8_U8P8)(unsigned char, unsigned char*);//函数指针
typedef unsigned char* (*pMacro_FunctionP8_P8U8)(unsigned char*, unsigned char);//函数指针
typedef unsigned char* (*pMacro_FunctionP8_P8P8)(unsigned char*, unsigned char*);//函数指针

typedef unsigned char (*pMacro_FunctionU8_U8U16)(unsigned char, unsigned int);//函数指针
typedef unsigned char (*pMacro_FunctionU8_U8P16)(unsigned char, unsigned int*);//函数指针
typedef unsigned char (*pMacro_FunctionU8_P8U16)(unsigned char*, unsigned int);//函数指针
typedef unsigned char (*pMacro_FunctionU8_P8P16)(unsigned char*, unsigned int*);//函数指针

typedef unsigned char* (*pMacro_FunctionP8_U8U16)(unsigned char, unsigned int);//函数指针
typedef unsigned char* (*pMacro_FunctionP8_U8P16)(unsigned char, unsigned int*);//函数指针
typedef unsigned char* (*pMacro_FunctionP8_P8U16)(unsigned char*, unsigned int);//函数指针
typedef unsigned char* (*pMacro_FunctionP8_P8P16)(unsigned char*, unsigned int*);//函数指针

typedef unsigned char (*pMacro_FunctionU8_U16)(unsigned int);//函数指针
typedef unsigned char (*pMacro_FunctionU8_P16)(unsigned int*);//函数指针
typedef unsigned char* (*pMacro_FunctionP8_U16)(unsigned int);//函数指针
typedef unsigned char* (*pMacro_FunctionP8_P16)(unsigned int*);//函数指针

typedef unsigned char (*pMacro_FunctionU8_U16U8)(unsigned int, unsigned char);//函数指针
typedef unsigned char (*pMacro_FunctionU8_U16P8)(unsigned int, unsigned char*);//函数指针
typedef unsigned char (*pMacro_FunctionU8_P16U8)(unsigned int*, unsigned char);//函数指针
typedef unsigned char (*pMacro_FunctionU8_P16P8)(unsigned int*, unsigned char*);//函数指针

typedef unsigned char* (*pMacro_FunctionP8_U16U8)(unsigned int, unsigned char);//函数指针
typedef unsigned char* (*pMacro_FunctionP8_U16P8)(unsigned int, unsigned char*);//函数指针
typedef unsigned char* (*pMacro_FunctionP8_P16U8)(unsigned int*, unsigned char);//函数指针
typedef unsigned char* (*pMacro_FunctionP8_P16P8)(unsigned int*, unsigned char*);//函数指针


typedef unsigned char (*pMacro_FunctionU8_U16U16)(unsigned int, unsigned int);//函数指针
typedef unsigned char (*pMacro_FunctionU8_U16U32)(unsigned int, unsigned long);//函数指针

typedef unsigned char (*pMacro_FunctionU8_U32)(unsigned long);//函数指针
typedef unsigned char (*pMacro_FunctionU8_P32)(unsigned long*);//函数指针
typedef unsigned char (*pMacro_FunctionU8_U32U8)(unsigned long, unsigned char);//函数指针
typedef unsigned char (*pMacro_FunctionU8_U32U16)(unsigned long, unsigned int);//函数指针
typedef unsigned char (*pMacro_FunctionU8_U32U32)(unsigned long, unsigned long);//函数指针

typedef unsigned char (*pMacro_FunctionU8_U8U8U8)(unsigned char, unsigned char, unsigned char);//函数指针
typedef unsigned char (*pMacro_FunctionU8_U8U8U16)(unsigned char, unsigned char, unsigned int);//函数指针
typedef unsigned char (*pMacro_FunctionU8_U8U16U8)(unsigned char, unsigned int, unsigned char);//函数指针
typedef unsigned char (*pMacro_FunctionU8_U8U16U16)(unsigned char, unsigned int, unsigned int);//函数指针

typedef unsigned char (*pMacro_FunctionU8_U16U8U8)(unsigned int, unsigned char, unsigned char);//函数指针
typedef unsigned char (*pMacro_FunctionU8_U16U8U16)(unsigned int, unsigned char, unsigned int);//函数指针
typedef unsigned char (*pMacro_FunctionU8_U16U16U8)(unsigned int, unsigned int, unsigned char);//函数指针
typedef unsigned char (*pMacro_FunctionU8_U16U16U16)(unsigned int, unsigned int, unsigned int);//函数指针


typedef unsigned int (*pMacro_FunctionU16)(void);//函数指针

typedef unsigned int (*pMacro_FunctionU16_U8)(unsigned char);//函数指针
typedef unsigned int (*pMacro_FunctionU16_U8U8)(unsigned char, unsigned char);//函数指针
typedef unsigned int (*pMacro_FunctionU16_U8U16)(unsigned char, unsigned int);//函数指针

typedef unsigned int (*pMacro_FunctionU16_U16)(unsigned int);//函数指针
typedef unsigned int (*pMacro_FunctionU16_U16U8)(unsigned int, unsigned char);//函数指针
typedef unsigned int (*pMacro_FunctionU16_U16U16)(unsigned int, unsigned int);//函数指针
typedef unsigned int (*pMacro_FunctionU16_U16U32)(unsigned int, unsigned long);//函数指针

typedef unsigned int (*pMacro_FunctionU16_U32)(unsigned long);//函数指针
typedef unsigned int (*pMacro_FunctionU16_U32U8)(unsigned long, unsigned char);//函数指针
typedef unsigned int (*pMacro_FunctionU16_U32U16)(unsigned long, unsigned int);//函数指针
typedef unsigned int (*pMacro_FunctionU16_U32U32)(unsigned long, unsigned long);//函数指针

typedef unsigned int (*pMacro_FunctionU16_U8U8U8)(unsigned char, unsigned char, unsigned char);//函数指针
typedef unsigned int (*pMacro_FunctionU16_U8U8U16)(unsigned char, unsigned char, unsigned int);//函数指针
typedef unsigned int (*pMacro_FunctionU16_U8U16U8)(unsigned char, unsigned int, unsigned char);//函数指针
typedef unsigned int (*pMacro_FunctionU16_U8U16U16)(unsigned char, unsigned int, unsigned int);//函数指针

typedef unsigned int (*pMacro_FunctionU16_U16U8U8)(unsigned int, unsigned char, unsigned char);//函数指针
typedef unsigned int (*pMacro_FunctionU16_U16U8U16)(unsigned int, unsigned char, unsigned int);//函数指针
typedef unsigned int (*pMacro_FunctionU16_U16U16U8)(unsigned int, unsigned int, unsigned char);//函数指针
typedef unsigned int (*pMacro_FunctionU16_U16U16U16)(unsigned int, unsigned int, unsigned int);//函数指针


typedef unsigned long (*pMacro_FunctionU32)(void);//函数指针

typedef unsigned long (*pMacro_FunctionU32_U8)(unsigned char);//函数指针
typedef unsigned long (*pMacro_FunctionU32_U8U8)(unsigned char, unsigned char);//函数指针
typedef unsigned long (*pMacro_FunctionU32_U8U16)(unsigned char, unsigned int);//函数指针

typedef unsigned long (*pMacro_FunctionU32_U16)(unsigned int);//函数指针
typedef unsigned long (*pMacro_FunctionU32_U16U8)(unsigned int, unsigned char);//函数指针
typedef unsigned long (*pMacro_FunctionU32_U16U16)(unsigned int, unsigned int);//函数指针
typedef unsigned long (*pMacro_FunctionU32_U16U32)(unsigned int, unsigned long);//函数指针

typedef unsigned long (*pMacro_FunctionU32_U32)(unsigned long);//函数指针
typedef unsigned long (*pMacro_FunctionU32_U32U8)(unsigned long, unsigned char);//函数指针
typedef unsigned long (*pMacro_FunctionU32_U32U16)(unsigned long, unsigned int);//函数指针
typedef unsigned long (*pMacro_FunctionU32_U32U32)(unsigned long, unsigned long);//函数指针

typedef unsigned long (*pMacro_FunctionU32_U8U8U8)(unsigned char, unsigned char, unsigned char);//函数指针
typedef unsigned long (*pMacro_FunctionU32_U8U8U16)(unsigned char, unsigned char, unsigned int);//函数指针
typedef unsigned long (*pMacro_FunctionU32_U8U16U8)(unsigned char, unsigned int, unsigned char);//函数指针
typedef unsigned long (*pMacro_FunctionU32_U8U16U16)(unsigned char, unsigned int, unsigned int);//函数指针

typedef unsigned long (*pMacro_FunctionU32_U16U8U8)(unsigned int, unsigned char, unsigned char);//函数指针
typedef unsigned long (*pMacro_FunctionU32_U16U8U16)(unsigned int, unsigned char, unsigned int);//函数指针
typedef unsigned long (*pMacro_FunctionU32_U16U16U8)(unsigned int, unsigned int, unsigned char);//函数指针
typedef unsigned long (*pMacro_FunctionU32_U16U16U16)(unsigned int, unsigned int, unsigned int);//函数指针

#ifdef __cplusplus
}
#endif
#endif//__HOTMACRO_H__

使用特权

评论回复
13
sxggj|  楼主 | 2009-3-11 08:59 | 只看该作者

查了一下C语言书,原来书上在讲TYPEDEF时,已经讲到

看来书还是有用滴!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

230

主题

1397

帖子

3

粉丝