理解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*)

我无法编译此代码…可能与