我看到了这行代码,我不明白什么是typedef:ed where ...
typedef void *(*SomeType)(OtherType mem, thirdtype size);
那么,我该如何使用它?
答案 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
是指向函数的指针,该函数接受OtherType
和thirdtype
作为参数并返回void *
答案 3 :(得分:0)
当我在阅读复杂的c声明时遇到问题时,找到了这个有用的链接。 可以帮到你。