文档章节

宏的使用

老汉-憨憨
 老汉-憨憨
发布于 2017/03/30 17:06
字数 120
阅读 7
收藏 0
#include <stdlib.h>
#include <stdio.h>

typedef void (*p_func_t)(void);

#define STATE_TABLE \
    ENTRY(STATE0, func0) \
    ENTRY(STATE1, func1) \
    ENTRY(STATE2, func2) \
    ENTRY(STATE3, func3) \
    ENTRY(STATE4, func4) \
    ENTRY(STATE5, func5) 

#define ENTRY(a, b) static void b(void);
    STATE_TABLE
#undef ENTRY

enum {
    #define ENTRY(a, b) a,
        STATE_TABLE
    #undef ENTRY
        NUM_STATES
};

p_func_t jumptable[NUM_STATES] = {
    #define ENTRY(a , b) b,
        STATE_TABLE
    #undef ENTRY
};

#define ENTRY(a, b)  \
        static void b(void) { \
            printf("This is "#b"\n"); \
        }
    STATE_TABLE
#undef ENTRY

int main(int argc, char *argv[])
{
    int i;
    for (i = STATE0; i < NUM_STATES; i++) {
        (*jumptable[i])();
    }
    return 0;
}

 

输出结果:

This is func0
This is func1
This is func2
This is func3
This is func4
This is func5

 

© 著作权归作者所有

老汉-憨憨
粉丝 20
博文 322
码字总数 68382
作品 0
深圳
程序员
私信 提问
Confluence 6 创建一个用户宏

如果你想创建自定义的宏的话,用户宏能够帮你完成这个任务。这个可以在你系统中应用特定的操作,比如说应用自定义格式等。 用户用是在 Confluence 创建和和管理的,你需要有一定的编码基础才...

honeymoose
2018/04/25
0
0
[const与宏]-区别和使用

01-我们一般把常用的字符串、基本变量定义成宏 02-苹果一直推荐我们使用const、而不是宏 03-而且在swift中,苹果已经取缔了使用宏,不能再使用了 1:宏 与 const 的区别? 编译时刻 - 宏:在...

XJDomain
2016/08/09
30
0
zabbix专题:第八章 宏:MACRO

zabbix专题:第八章 宏:MACRO 对Linux有兴趣的朋友加入QQ群:476794643 在线交流 本文防盗链:http://zhang789.blog.51cto.com zabbix宏 (1)宏是一种抽象,他根据一系列预定义的规则替换一...

好笔记运维
2016/11/04
0
0
用可变参数宏(variadic macros)传递可变参数表

用可变参数宏(variadic macros)传递可变参数表 注意:VAARGS 从VS2005才开始支持 =========== 在 GNU C 中,宏可以接受可变数目的参数,就象函数一样,例如: #define prdebug(fmt,arg...) ...

Start-up
2012/10/19
132
0
ios宏的使用和技巧

ios宏的使用和技巧 替换字符 简单函数宏 复杂函数宏 之前的内容很容易明白了对吧,不过复杂的函数宏就没那么容易明白了。先看一下宏中的一些常用的特殊符号和系统方法 复杂宏会用到 等关键字...

法斗斗
2016/05/24
23
0

没有更多内容

加载失败,请刷新页面

加载更多

Flink Graph生成及Hash生成分析

222

MrPei
9分钟前
1
0
[译]Android Activity 和 Fragment 状态保存与恢复的最佳实践

https://blog.csdn.net/growing_tree/article/details/53759564 https://blog.csdn.net/u013588712/article/details/54691791...

shzwork
10分钟前
1
0
调用第三方快递鸟物流单号查询接口API代码示例

最近进行网站后台开发,需要实现物流的即时查询,发现之前集成的 快递100物流查询 API ——【PHP 快递查询源码资源】 已经不能正常使用了; 为了方便以后的业务需求,经过比较,最后选择使用...

程序的小猿
17分钟前
2
0
java Poi 操作执行excel 文件中函数问题

poi 读取excel 文件,当excel 有函数时,poi直接读取返回的是excel 函数,并不能返回函数计算结果: 解决步骤: sheet.setForceFormulaRecalculation(true); 判断该列格式是否为...

早a
25分钟前
3
0
js模拟实现输入框input事件

直接修改value值是无法触发对应元素的事件的。 通过发送输入框input事件了, 可以触发。 这里简单封装了一个方法. window.inputValue = function (dom, st) { var evt = new InputEvent('i...

開援带碼
26分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部