簡體   English   中英

如何在C中獲取值宏?

[英]How to get value macro in C?

我在使用 C 中的宏時遇到了問題。有沒有辦法在宏中調用並獲取參數的值來調用函數?

下面的示例代碼生成錯誤:

#define order(i) fruits_i##_banana()

void fruits_1_banana()
{
    printf("Order banana\n");
}

int main()
{
   int a = 1;
   order(a);
}

您需要在i之前和之后使用##

#define order( i ) fruits_##i##_banana()

void fruits_1_banana()
{
    printf("Order banana\n");
}

int main()
{
   order(1);
}

請注意,您不能將a傳遞給order因為宏擴展不采用變量的值,它只是按原樣使用變量名稱。

參考資料: https : //docs.microsoft.com/en-us/cpp/preprocessor/token-pasting-operator-hash-hash?view=msvc-160

相反,您可以使用函數指針數組:

#include <stdio.h>

static void fruits_0_banana(void)
{
    printf("Order banana 0\n");
}

static void fruits_1_banana(void)
{
    printf("Order banana 1\n");
}

static void (*order[])(void) = {
    fruits_0_banana, // Or NULL if you don't need it
    fruits_1_banana,
    // ...
};

int main(void)
{
    int a = 1;

    order[a]();
    return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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