这个typedef是如何工作的?

时间:2013-12-03 10:33:27

标签: c typedef

我看到了这行代码,我不明白什么是typedef:ed where ...

typedef void *(*SomeType)(OtherType mem, thirdtype size);

那么,我该如何使用它?

4 个答案:

答案 0 :(得分:5)

这是函数指针的typedef。

typedef void *(*SomeType)(OtherType mem, thirdtype size);

void* func (OtherType mem, thirdtype size) {}

然后可以这样使用:

SomeType fptr = &func;

fptr(someMem, someSize);

或者它本身可以作为参数传递给函数

void memory_visitor (SomeType visit_cb)
{
  ...
  if (visit_cb)
    visit_cb (visistedMem, visistedMemSize);
}

答案 1 :(得分:2)

有一个网站:C gibberish ↔ English,又名cdecl

问题:void *(*SomeType)(OtherType, thirdtype)

答案是:

  

将SomeType声明为函数指针(OtherType,thirdtype)   返回指向void的指针

cdecl是学习C声明系统的好方法。

答案 2 :(得分:0)

SomeType是指向函数的指针,该函数接受OtherTypethirdtype作为参数并返回void *

答案 3 :(得分:0)

当我在阅读复杂的c声明时遇到问题时,找到了这个有用的链接。 可以帮到你。

How to read complex C deaclaration