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 _'.
我的问题是:
我是否必须使用typedef声明函数指针类型?
为什么typedef (void) (*print)(void);错了?这()意味着什么?
为什么我不能这样写: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)
您不需要typedef来声明变量.您可以直接编写void (*p)(void)声明一个p指向函数获取void和返回的变量void.但是,要为函数指针声明类型别名/名称,typedef是该工具.
它并不意味着它不是有效的C语法.
因为它不是C的工作原理.C中的Typedef模仿了如何声明或定义变量.