的typedef函数指针类型 [英] typedef a function pointer type

查看:120
本文介绍了的typedef函数指针类型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要声明指针类型,指向一个功能,所以我尝试:

无效的typedef(*打印)(无效); 完美的作品

无效(*打印)(无效); p是ponter变量,而不是一个类型。

的typedef(无效)(*打印)(无效); 错误预期标识符或(前无效

无效的typedef(*)(无效)打印;

错误:预期'=',',',',','ASM'或'_的属性的_'前'打印'

我的问题是:


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


  2. 为什么的typedef(无效)(*打印)(无效); 是错的?什么()意味着在这里?


  3. 为什么我不能这样写的:<?code>无效的typedef(*)(无效)打印



解决方案

正确的方法是:

 无效的typedef(* print_function_ptr)(无效)

和其变量使用/参数声明是:

  print_function_ptr磷;


  1. 您不需要一个typedef来声明一个变量。您可以直接写无效(* P)(无效)来声明一个变量 P 指着利用函数无效并返回无效。然而,为一个函数指针声明一个类型别名/名称,的typedef 是工具。


  2. 这并不意味着什么,它不是一个有效的C语法。


  3. 由于它不是C如何工作的。用C模仿类型定义的变量是如何声明或定义。


I want to declare a pointer type which point to a function, so I try:

typedef void (*print)(void); works perfect

void (*print)(void); p is a ponter variable , not a type.

typedef (void) (*print)(void); error expected identifier or ‘(’ before ‘void’

typedef void (*)(void) Print;

error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘_ attribute _’ before ‘Print’ .

My question is:

  1. Do I have to use typedef to declare a function pointer type ?

  2. Why typedef (void) (*print)(void); is wrong ? what () means here?

  3. Why I can't write in this way:typedef void (*)(void) Print ?

解决方案

The correct way is:

typedef void (*print_function_ptr)(void)

and its usage for variable/parameter declaration is:

print_function_ptr p;

  1. You don't need a typedef to declare a variable. You can directly write void (*p)(void) to declare a variable p pointing to a function taking void and returning void. However to declare a type alias / name for a pointer to function, typedef is the tool.

  2. It does not mean anything it is not a valid C syntax.

  3. Because it is not how C works. Typedefs in C mimics how variables are declared or defined.

这篇关于的typedef函数指针类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆