“typedef void *(*Something)(unsigned int)”是什么意思
What does “typedef void *(*Something)(unsigned int)” mean
我想知道下面是什么意思
在 .h 中,它有
typedef void *(*some_name)(unsigned int);
然后在.c
some_name rt;
some_name State= 0;
unsigned int t = 1;
rt = (some_name) State(t);
这个类型定义
typedef void *(*some_name)(unsigned int);
为指向类型 void *( unsigned int )
的函数的指针引入一个别名,该函数具有 return 类型 void *
和一个类型 unsigned int
的参数。
至于这段代码
some_name rt;
some_name State= 0;
unsigned int t = 1;
rt = (some_name) State(t);
那就没意义了
它为指向具有 return 类型 void*
和单个 unsigned int 参数的函数的指针创建别名 some_name
。一个例子:
typedef void *(*my_alloc_type)(unsigned int);
void *my_alloc(unsigned int size)
{
return malloc(size);
}
int main(int argc, char *argv[])
{
my_alloc_type allocator = my_alloc;
void *p = allocator(100);
free(p);
return 0;
}
typedef void *(*some_name)(unsigned int);
^^^^^^^^^
somename
是
typedef void *(*some_name)(unsigned int);
^^ ^
一个指针
typedef void *(*some_name)(unsigned int);
^^^^^^^^^^^^^^
接受无符号整数的函数
typedef void *(*some_name)(unsigned int);
^^^^^^
和 return 是指向 void
的指针
typedef void *(*some_name)(unsigned int);
^^^^^^^
但对于类型。
因此“somename
类型适用于接受无符号和 return 指向 void 的指针的函数”
#include <stdlib.h>
typedef void *(*some_name)(unsigned int);
void *foo(unsigned t) {
if (t == 0) return NULL;
return malloc(t);
}
int main(void) {
somename fxptr = foo;
void *bar = fxptr(42);
free(bar);
}
我想知道下面是什么意思 在 .h 中,它有
typedef void *(*some_name)(unsigned int);
然后在.c
some_name rt;
some_name State= 0;
unsigned int t = 1;
rt = (some_name) State(t);
这个类型定义
typedef void *(*some_name)(unsigned int);
为指向类型 void *( unsigned int )
的函数的指针引入一个别名,该函数具有 return 类型 void *
和一个类型 unsigned int
的参数。
至于这段代码
some_name rt;
some_name State= 0;
unsigned int t = 1;
rt = (some_name) State(t);
那就没意义了
它为指向具有 return 类型 void*
和单个 unsigned int 参数的函数的指针创建别名 some_name
。一个例子:
typedef void *(*my_alloc_type)(unsigned int);
void *my_alloc(unsigned int size)
{
return malloc(size);
}
int main(int argc, char *argv[])
{
my_alloc_type allocator = my_alloc;
void *p = allocator(100);
free(p);
return 0;
}
typedef void *(*some_name)(unsigned int); ^^^^^^^^^
somename
是
typedef void *(*some_name)(unsigned int); ^^ ^
一个指针
typedef void *(*some_name)(unsigned int); ^^^^^^^^^^^^^^
接受无符号整数的函数
typedef void *(*some_name)(unsigned int); ^^^^^^
和 return 是指向 void
的指针typedefvoid *(*some_name)(unsigned int);^^^^^^^
但对于类型。
因此“somename
类型适用于接受无符号和 return 指向 void 的指针的函数”
#include <stdlib.h>
typedef void *(*some_name)(unsigned int);
void *foo(unsigned t) {
if (t == 0) return NULL;
return malloc(t);
}
int main(void) {
somename fxptr = foo;
void *bar = fxptr(42);
free(bar);
}