typedef int (*init_fnc_t)(void);的理解
2015-11-11 20:22
387 查看
学习Uboot的时候有这样typedef int (*init_fnc_t)(void); 一个定义, 感觉很困惑,故此问度娘
typedef int(init_fnc_t) (void);
这个就是一个取别名的过程。
我们通常情况下会如下使用 typedef :
typedef int MyInt;
MyInt a;
这个时候我们的MyInt 就和int是一样的意思。
而对于函数的申明我们通常会这样申明:
int InitFunction() (void);
此时表示申明了一个函数名为InitFunction的函数, 函数没有任何的形参,返回值类型为int型。
而对于 typedef int(init_fnc_t) (void);
就是对一个 int (void)类型的函数类型进行取别名init_fnc_t。 我们可以利用这个别名进行创建这个类型的函数对象。
init_fnc_t *MyFunction;
这里就是一个函数的指针。如果某个函数的类型和这个函数一样的,那么可以将这个函数的指针指向该函数。然后你就可以直接调用MyFunction();
以下是例子
C/C++ code#include <stdio.h> int GetData(void) { return 101; } int main() { typedef int (init_fnc_t)(void); typedef int (*init_fnc_t_p)(void);
init_fnc_t *MyFunction; init_fnc_t_p MyFunctionP; MyFunction = GetData; MyFunctionP = GetData; printf("(init_fnc_t)(void) = %d \n",MyFunction()); printf("(*init_fnc_t_p)(void) = %d \n",MyFunctionP()); return 0; }
这个时候打印出来的结果就是
101
101
typedef int(init_fnc_t) (void);
这个就是一个取别名的过程。
我们通常情况下会如下使用 typedef :
typedef int MyInt;
MyInt a;
这个时候我们的MyInt 就和int是一样的意思。
而对于函数的申明我们通常会这样申明:
int InitFunction() (void);
此时表示申明了一个函数名为InitFunction的函数, 函数没有任何的形参,返回值类型为int型。
而对于 typedef int(init_fnc_t) (void);
就是对一个 int (void)类型的函数类型进行取别名init_fnc_t。 我们可以利用这个别名进行创建这个类型的函数对象。
init_fnc_t *MyFunction;
这里就是一个函数的指针。如果某个函数的类型和这个函数一样的,那么可以将这个函数的指针指向该函数。然后你就可以直接调用MyFunction();
以下是例子
C/C++ code#include <stdio.h> int GetData(void) { return 101; } int main() { typedef int (init_fnc_t)(void); typedef int (*init_fnc_t_p)(void);
init_fnc_t *MyFunction; init_fnc_t_p MyFunctionP; MyFunction = GetData; MyFunctionP = GetData; printf("(init_fnc_t)(void) = %d \n",MyFunction()); printf("(*init_fnc_t_p)(void) = %d \n",MyFunctionP()); return 0; }
这个时候打印出来的结果就是
101
101
相关文章推荐
- Python列表
- Web工程中配置文件路径问题
- 【C#】RGB,CMYK,HSB各种颜色表示的转换(转)
- ACM学习历程—POJ 3764 The xor-longest Path(xor && 字典树 && 贪心)
- [原]横向滑动的HorizontalListView滑动指定位置的解决方法
- Python基本语法及优缺点
- Intent 拨打电话
- c++ 11 多线线程系列-----thread
- 黑马程序员-OC加强回顾-内存管理
- hdu 3033 I love sneakers!
- 32/64位操作系统&&应用程序详解(英文资料)
- 【设计模式】——单例模式
- ASP.NET Redis 开发
- Linux查看物理CPU个数、核数、逻辑CPU个数
- DOM事件
- java定时器Timer当执行时间大于间隔时间会怎样
- Hadoop之WordCount计数器程序编写并打包
- 我的Android 成长之路
- CUDA笔记(六)
- 栈的应用之算术表达式