LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1039|回复: 9

各位高手,请问下以下的这个声明表示什么??谢谢

[复制链接]
发表于 2006-9-13 12:18:25 | 显示全部楼层 |阅读模式
有这么一个声明:
typedef void (*confman_datatype_restore)(const char *data,\
  confman_dataelement *element);

以上 confman_datatype_restore是一个函数,还是一个类似的声明?
请高手指教。
谢谢了!
发表于 2006-9-13 12:36:52 | 显示全部楼层
定义一个函数指针类型
回复 支持 反对

使用道具 举报

发表于 2006-9-13 12:39:17 | 显示全部楼层
这定义了一个类型 confman_datatype_restore,具体它是什么意思呢?
用一下就知道了
confman_datatype_restore x;
等效于
typedef void (*x)(const char *data,\
confman_dataelement *element);
因此 x 是一个函数指针。此函数类型无返回值, 有两个参数。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-9-13 12:43:37 | 显示全部楼层
但是接下来有这样的声明: typedef struct
{
    const char *name;                    /* short name for this datatype */
    confman_datatype_restore restore;
    confman_datatype_persist persist;
    confman_datatype_restore restore_default;
    confman_datatype_dispose dispose;
} confman_datatype;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-9-13 12:44:55 | 显示全部楼层
然后看不懂这个声明了什么??
该结构体内部的那几个变量之前的声明都差不多!
看得蒙蒙的。。
请大家指教。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-9-13 12:46:29 | 显示全部楼层
Post by DoDo
这定义了一个类型 confman_datatype_restore,具体它是什么意思呢?
用一下就知道了
confman_datatype_restore x;
等效于
typedef void (*x)(const char *data,\
confman_dataelement *element);
因此 x 是一个函数指针。此函数类型无返回值, 有两个参数。


哦,知道了,谢谢DoDo。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-9-13 12:50:41 | 显示全部楼层
Post by DoDo
这定义了一个类型 confman_datatype_restore,具体它是什么意思呢?
用一下就知道了
confman_datatype_restore x;
等效于
typedef void (*x)(const char *data,\
confman_dataelement *element);
因此 x 是一个函数指针。此函数类型无返回值, 有两个参数。


再问下,如果定义了一个union,引用之后是怎么样?比如刚刚那个例子:
typedef union
{
    BOOL boolean;
    int signed_decimal;
    unsigned unsigned_decimal;
    unsigned hex;
    unsigned character;                /* not char to leave it open for
                                   unicode values */
    char *string;
    confman_unsigned_list *hex_list;
    confman_unsigned_list *unsigned_decimal_list;
    confman_signed_list *signed_decimal_list;

    void *ptr;                        /* used for private types */
} confman_dataelement;

confman_dataelement *element之后怎么引用的?
我不是很明白!
谢谢!
回复 支持 反对

使用道具 举报

发表于 2006-9-13 13:02:28 | 显示全部楼层
element 是一个那个 union 类型的指针
还是举个例子来说吧
[PHP]
/* 这里我们假设有一个叫 fn 的函数, 观察它的声明 */
void fn(const char *data,\
confman_dataelement *element)
{
  element->hex = 0;
}
int main(void)
{
  confman_datatype_restore x = fn;/* 为 x 符值, 用前面假设的 fn */
  char my_data[100];
  confman_dataelement my_element;

  x(my_data, &my_element);
}
[/PHP]
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-9-13 14:12:28 | 显示全部楼层
Post by DoDo
element 是一个那个 union 类型的指针
还是举个例子来说吧
[PHP]
/* 这里我们假设有一个叫 fn 的函数, 观察它的声明 */
void fn(const char *data,\
confman_dataelement *element)
{
  element->hex = 0;
}
int main(void)
{
  confman_datatype_restore x = fn;/* 为 x 符值, 用前面假设的 fn */
  char my_data[100];
  confman_dataelement my_element;

  x(my_data, &my_element);
}
[/PHP]


谢谢,你可否给我留个邮箱或是MSN之类的,有问题请教你方便些!
谢谢
回复 支持 反对

使用道具 举报

发表于 2006-9-13 20:02:45 | 显示全部楼层
呵呵, 抱歉我不喜欢用聊天软件, 邮箱也只是为了注册论坛才申请的
有问题在论坛上说吧, 这么多兄弟, 总有人可以解答你的问题
回复 支持 反对

使用道具 举报

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

本版积分规则

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