簡體   English   中英

根據變量的值確定宏

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM