QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 849|回复: 6

关于typedef !

[复制链接]
发表于 2005-8-12 09:58:59 | 显示全部楼层 |阅读模式
typedef  int (*cmd_function)(struct sip_msg*, char*, char*);
这条语句不太能理解,有谁能够帮我详细解释一下吗?谢谢了!
发表于 2005-8-12 10:09:21 | 显示全部楼层
函数指针*cmd_function 返回值是int
回复

使用道具 举报

 楼主| 发表于 2005-8-12 10:28:16 | 显示全部楼层
哦,我还以为它用typedef做别名,那后面有cmd_function function;算什么意思啊!
回复

使用道具 举报

发表于 2005-8-12 10:38:01 | 显示全部楼层


我猜是这样的

这句话吧一个函数指针作为一个类型

以后就可以用 type t;直接用函数了
回复

使用道具 举报

发表于 2005-8-12 11:52:39 | 显示全部楼层
typedef用在函数指针和普通类型上不一样,但目的都是简化名称。
typedef unsigned char uchar; //用uchar来表示unsigned char
typedef int (*myfun) (int a,int b); //用myfun来表示这个函数指针的类型。
[code:1]
#include <stdio.h>
typedef unsigned char uchar;
typedef int (*myfun) (int i,int j);
main()
{
    uchar a;
    myfun b;
};

[/code:1]
回复

使用道具 举报

 楼主| 发表于 2005-8-12 14:53:08 | 显示全部楼层
哦,你的意思就是实现不给myfun一个别名,等要用的时候在给myfun进行定义别名,就列如:myfun b !
回复

使用道具 举报

发表于 2005-8-12 17:31:25 | 显示全部楼层
不是那意思。
看这个你就应该明白了吧。myfun1相当于类型,myfun2是变量。用myfun1可以定义出int (*) (int, int)类型的函数指针,但myfun2本身就是一个函数指针,只能给它付值让它指向某个函数。

[code:1]
#include <stdio.h>
typedef int (*myfun1) (int a,int b);
int (*myfun2) (int a, int b);

int test1(int a,int b)
{
    printf("hello %d %d\n",a,b);
};

int test2(int a,int b)
{
    printf("hi %d %d\n",a,b);
}

main()
{
    myfun1 a;
    a = test1;
    a(1,1);
    a = test2;
    a(1,1);

    myfun2 = test1;
    myfun2(2,2);
    myfun2 = test2;
    myfun2(2,2);
}

[/code:1]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-5 13:30 , Processed in 0.040629 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表