理解C中函数的typedef
我遇到了以下函数声明,我无法理解它是如何工作的: 该函数在文件中声明如下:理解C中函数的typedef,c,typedef,C,Typedef,我遇到了以下函数声明,我无法理解它是如何工作的: 该函数在文件中声明如下: struct newtype { /* some definition */ }; typedef void function1 (int* a, newtype* p); function1 function2; void function2(int* a, newtype* p) { /* function definition */ } int function3 (int, char, fu
struct newtype {
/* some definition */
};
typedef void function1 (int* a, newtype* p);
function1 function2;
void function2(int* a, newtype* p)
{
/* function definition */
}
int function3 (int, char, function1* );
/* definition */
function3(int a, char c, function2 )
{
/* function definition */
}
然后在另一个C代码中,上述声明用于声明另一个函数2,如下所示:
struct newtype {
/* some definition */
};
typedef void function1 (int* a, newtype* p);
function1 function2;
void function2(int* a, newtype* p)
{
/* function definition */
}
int function3 (int, char, function1* );
/* definition */
function3(int a, char c, function2 )
{
/* function definition */
}
然后按如下方式使用函数2:
struct newtype {
/* some definition */
};
typedef void function1 (int* a, newtype* p);
function1 function2;
void function2(int* a, newtype* p)
{
/* function definition */
}
int function3 (int, char, function1* );
/* definition */
function3(int a, char c, function2 )
{
/* function definition */
}
我无法理解以下陈述:
功能1功能2;
typedef void function1(参数)是什么意思,因为function1没有声明为指针。有人能解释一下这里发生了什么吗 function1被声明为函数的类型,函数不返回任何内容,并将指向int的指针和指向newtype的指针作为参数 这种方法对于确保获得符合特定格式的函数非常有用,尤其是在使用回调函数/函数指针时
typedef void function1 (int* a, newtype* p);
将名称function1定义为类型void()(int*,newtype*)
的别名,即函数
因此<代码>功能1功能2代码>与此原型相同:
void function2 (int* a, newtype* p);
名称
function1
也可用于声明指针,这会产生一个熟悉的“函数指针”。这就是function3在声明intFunction3(int,char,function1*)时所做的代码>-它的最后一个参数是指向一个函数的指针,该函数的签名为void()(int*,newtype*)
我无法编译此代码…可能与