typedef一个函数指针类型

Lid*_*Guo 4 c pointers typedef function

我想声明一个指向函数的指针类型,所以我尝试:

typedef void (*print)(void); 工作完美

void (*print)(void); p是一个ponter变量,而不是一个类型.

typedef (void) (*print)(void); 错误预期标识符或'''在'void'之前

typedef void (*)(void) Print;

错误:在'打印'之前预期'=',',',';','asm'或'_ attribute _'.

我的问题是:

  1. 我是否必须使用typedef声明函数指针类型?

  2. 为什么typedef (void) (*print)(void);错了?这()意味着什么?

  3. 为什么我不能这样写:typedef void (*)(void) Print

Jur*_*aho 11

正确的方法是:

typedef void (*print_function_ptr)(void)
Run Code Online (Sandbox Code Playgroud)

它对变量/参数声明的用法是:

print_function_ptr p;
Run Code Online (Sandbox Code Playgroud)
  1. 您不需要typedef来声明变量.您可以直接编写void (*p)(void)声明一个p指向函数获取void和返回的变量void.但是,要为函数指针声明类型别名/名称,typedef是该工具.

  2. 它并不意味着它不是有效的C语法.

  3. 因为它不是C的工作原理.C中的Typedef模仿了如何声明或定义变量.