[英]Decide macro based on the value of variable
我想根据变量的值使用特定的宏。 我们如何在C ++中做到这一点?
例:
#define ONE 1
#define TWO 2
#define THREE 3
#define FOUR 4
int main()
{
int i = 0;
i = fun();
if (i == 1)
printf("%d\n", ONE);
else if(i == 2)
printf("%d\n", TWO);
else if(i == 3)
printf("%d\n", THREE);
else if(i == 4)
printf("%d\n", FOUR);
return 0;
}
如何在不使用太多if语句的情况下做到这一点?
您可以使用switch:
switch(fun()) {
case 1: printf("%d\n", ONE); break;
case 2: printf("%d\n", TWO); break;
case 3: printf("%d\n", THREE); break;
case 4: printf("%d\n", FOUR); break;
default: break;
}
或数组在您的情况下:
const int ints[] = {ONE, TWO, THREE, FOUR};
const int i = foo();
if (1 <= i && i <= 4) {
printf("%d\n", ints[i - 1]);
}
对于稀疏值(对于i
),应使用std::map
替换数组。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.