宏元编程——算数计算——ADD,SUB,MUL
来源:互联网 发布:淘宝女装店知乎推荐 编辑:程序博客网 时间:2024/05/29 18:28
TL_ADD和TL_SUB可以由基本数据结构TL_TUPLE,流程控制TL_WHILE和算数计算TL_INC,TL_DEC组合实现。
TL_ADD实现如下:
#define TL_ADD(p1,p2) TL_TUPLE_ELEM(0, \<span style="white-space:pre"></span>TL_WHILE(TL_ADD_P,TL_ADD_OP,(p1,p2)) \<span style="white-space:pre"></span>) \#define TL_ADD_P(r, state) TL_TUPLE_ELEM(1,state)#define TL_ADD_OP(r, state) \<span style="white-space:pre"></span>( \<span style="white-space:pre"></span>TL_INC(TL_TUPLE_ELEM(0,state)), \<span style="white-space:pre"></span>TL_DEC(TL_TUPLE_ELEM(1,state)) \<span style="white-space:pre"></span>) \
TL_SUB实现如下:
#define TL_SUB(p1,p2) TL_TUPLE_ELEM(0, \TL_WHILE(TL_SUB_P,TL_SUB_OP,(p1,p2)) \) \#define TL_SUB_P(r, state) TL_TUPLE_ELEM(1,state)#define TL_SUB_OP(r, state) \( \TL_DEC(TL_TUPLE_ELEM(0,state)), \TL_DEC(TL_TUPLE_ELEM(1,state)) \) \
TL_MUL实现如下:
#define TL_MUL(p1,p2) TL_TUPLE_ELEM( \2, \TL_WHILE(TL_MUL_P,TL_MUL_OP,(p1,p2,0)))#define TL_MUL_P(r, state) TL_TUPLE_ELEM(1,state)#define TL_MUL_OP(r, state) \( \TL_TUPLE_ELEM(0,state), \TL_DEC(TL_TUPLE_ELEM(1,state)), \<span style="color:#ff0000;">TL_ADD_D</span>( \TL_TUPLE_ELEM(2,state), \TL_TUPLE_ELEM(0,state)), \)注意上面红色标注的宏TL_ADD_D,这个地方没有用TL_ADD。主要原因是宏不能重入。TL_ADD里面在实现的时候会用到TL_WHILE。TL_MUL本身也会用到TL_WHILE,这会导致内层的TL_WHILE不会展开。具体如何用比较优雅的方法处理重入见宏元编程——谈谈宏的重入机制——TL_WHILE优化
0 0
- 宏元编程——算数计算——ADD,SUB,MUL
- 宏元编程——算数计算——INC,DEC
- 算术运算(ADD, SUB, MUL, DIV, COMPUTE)
- 宏元编程——关系计算——not_equal
- 汇编加减乘除指令 add adc sub sbb mul div
- 4. 算术运算指令,ADD/ADC,SUB/SBC ,MUL
- 宏元编程——逻辑计算——AND,OR,XOR,NOR
- 算数表达式的计算——Expression 类与stack混合的实现
- 宏元编程——代码生成
- 数论读书笔记——算数基本定理
- 黑马程序员——算数运算符
- 算法入门——小学生算数
- c语言基础5—算数运算
- 【unix学习】shell编程—参数、流程控制、算数运算、函数
- Opencv中Mat矩阵相乘——点乘、dot、mul运算详解
- OpenCV中Mat矩阵相乘——点乘、dot、mul运算详解
- Opencv中Mat矩阵乘法——点乘、dot、mul运算详解
- 汇编SUB和MUL的CF位
- gcc/g++ 出现.../crt1.o: In function `_start': (.text+0x18): undefined reference to `main'的错误
- Eclipse+ADT+Android SDK 搭建安卓开发环境
- HashMap原理
- ios键盘高度监听
- 从网站解析JSON异步加载到ListView事例
- 宏元编程——算数计算——ADD,SUB,MUL
- 对Socket函数的理解
- React Native开发之按钮的使用
- 带按钮的listview
- (转载)快速对图像的像素进行操作 opencv 实战
- android屏幕自适应&&android 属性
- s设置cookie的简单方法
- 检测手机类型、密度比和物理宽高
- TCP和UDP的区别(转)