根据变量的值决定宏

时间:2016-01-05 09:44:44

标签: c++

我想根据变量的值使用特定的宏。 我们怎样才能在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 else语句,我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

您可以使用开关:

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应该替换数组。