[英]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.