C 请解释typedef的用法

C 请解释typedef的用法,c,function,pointers,typedef,C,Function,Pointers,Typedef,代码如下: 我无法理解这里是如何使用typedef的。请解释。LOGHANDLE定义了一个可以指向任何东西的指针。 LogOpen\T定义函数指针。LOGHANDLE定义可以指向任何对象的指针。 LogOpen\T定义函数指针。typedef本身为指向函数的指针定义了一个类型别名,函数如下所示: void * STD_CALL f(unsigned char *, unsigned char *, unsigned long, unsigned long *); 变量LogOpen是指向函数

代码如下:


我无法理解这里是如何使用
typedef
的。请解释。

LOGHANDLE
定义了一个可以指向任何东西的指针。
LogOpen\T
定义函数指针。

LOGHANDLE
定义可以指向任何对象的指针。
LogOpen\T
定义函数指针。
typedef
本身为指向函数的指针定义了一个类型别名,函数如下所示:

void * STD_CALL f(unsigned char *, unsigned char *, unsigned long, unsigned long *);

变量
LogOpen
是指向函数的实际指针。稍后,
ImportSymbol
的结果被强制转换为指向函数的指针。

typedef本身为指向函数的指针定义了一个类型别名,该函数类似于:

void * STD_CALL f(unsigned char *, unsigned char *, unsigned long, unsigned long *);

变量
LogOpen
是指向函数的实际指针。稍后,
ImportSymbol
的结果被转换为指向函数的指针。

这是指向原型函数的指针

LONGHANDLE functionname
   (unsigned char *, 
    unsigned char *, 
    unsigned long, 
    unsigned long *);
使用示例

LOGHANDLE mylogfunction
   (unsigned char *, 
    unsigned char *, 
    unsigned long, 
    unsigned long *){/* code*/}


LogOpen_T function_handle = (LogOpen_T)(&mylogfunction);

这是指向原型函数的指针

LONGHANDLE functionname
   (unsigned char *, 
    unsigned char *, 
    unsigned long, 
    unsigned long *);
使用示例

LOGHANDLE mylogfunction
   (unsigned char *, 
    unsigned char *, 
    unsigned long, 
    unsigned long *){/* code*/}


LogOpen_T function_handle = (LogOpen_T)(&mylogfunction);

删除单词“typedef”。。。那你明白了吗?如果不是,您的问题不在于typedef。如果是这样的话,那么您理解typedef应该不会有任何问题。@JimBalter:我还记得第一次看到函数指针的
typedef
,我是多么恼火。@alk我无法关联。就像我说的,如果你已经理解了函数指针的声明——这是令人讨厌的部分,因为C是如何将声明的名称隐藏在一堆语法中的——那么理解typedef是很简单的,因为它只是将名称声明为类型的同义词,而不是类型的变量“类型定义" ... 那你明白了吗?如果不是,您的问题不在于typedef。如果是这样的话,那么您理解typedef应该不会有任何问题。@JimBalter:我还记得第一次看到函数指针的
typedef
,我是多么恼火。@alk我无法关联。就像我说的,如果你已经理解了函数指针的声明——这是令人恼火的部分,因为C是如何将声明的名称隐藏在一堆语法中的——那么理解typedef是很简单的,因为它只是将名称声明为类型的同义词,而不是类型的变量。