分支判断选择的另外一种方式(类似switch case和if elseif),使用正则表达式定义的宏函数
2015-05-09 16:16
453 查看
在stm32头文件<RET_Device.h>无意中看到的,觉得是一种不错的方法。
#define GPIO_PORT(num) \
((num == 0) ? GPIOA : \
(num == 1) ? GPIOB : \
(num == 2) ? GPIOC : \
(num == 3) ? GPIOD : \
(num == 4) ? GPIOE : \
(num == 5) ? GPIOF : \
(num == 6) ? GPIOG : \
NULL)
举例:
#include <stdio.h>
char num;
#define CHAR_SELECT(n) \
((n==0) ? (num='a') : \
(n==1) ? (num='b') : \
(n==2) ? (num='c') : \
(num='?') \
)
int main()
{
CHAR_SELECT(2);
printf("%c\n",num);
return 0;
}
运行结果: c
#define GPIO_PORT(num) \
((num == 0) ? GPIOA : \
(num == 1) ? GPIOB : \
(num == 2) ? GPIOC : \
(num == 3) ? GPIOD : \
(num == 4) ? GPIOE : \
(num == 5) ? GPIOF : \
(num == 6) ? GPIOG : \
NULL)
举例:
#include <stdio.h>
char num;
#define CHAR_SELECT(n) \
((n==0) ? (num='a') : \
(n==1) ? (num='b') : \
(n==2) ? (num='c') : \
(num='?') \
)
int main()
{
CHAR_SELECT(2);
printf("%c\n",num);
return 0;
}
运行结果: c
相关文章推荐
- 实现1+2+3...+n,要求不能使用乘除法、循环、条件判断、选择相关的关键字(for、while、if、else、switch、case)。
- 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
- 求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)
- 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)
- 实现1+2+3...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)
- 实现1+2+3+...+n。要求不能使用乘除法,for,while,if,else,switch,case,等关键字及条件判断语句。
- 1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)
- 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)
- 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
- 《剑指offer》上的一道原题,求1+2+……+n,要求不能使用乘除法,for、while、if、else、switch、case等关键字以及条件判断语句
- javascript中的选择结构if和switch的简单使用方式及实际操作的易错点
- 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
- c++中的结构化语句 判断语句if 分支语句switch 循环语句 while 和 do while 循环语句for的使用
- 求1+2+…+n, 要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)
- 求1+2+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A? B:C)
- 求1+2+3+...+n,要求不能使用乘除法,for,while,if,else,switch,case等关键字以及条件判断语句
- 求 1+2+3+..n不能使用乘除法、 for 、 while 、 if 、 else 、 switch 、 case 等关键字以及条件判断语句
- 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
- c语言基础表达式, 关系运算符, 逻辑运算符, 位运算符, 数据的取值范围, 分支结构(if...else, switch...case)
- 求1+2+3+...+n,要求不能使用乘除法,for,while,if,else,switch,case等关键字以及条件判断语句