1. 程式人生 > 實用技巧 >c語言中#和##在巨集定義中的使用

c語言中#和##在巨集定義中的使用

是在巨集定義中將引數進行字串化的預處理特徵,例如:

#include <stdio.h>

#define P(EXP) printf("%s %d\n", #EXP, EXP)
int main()
{
    int a=123;
    
    P(a);
    return 0;
}

預編譯展開後的部分程式碼

#define P(EXP) printf("%s %d\n", #EXP, EXP)
int main()
{
    int a=123;
    
    printf("%s %d\n", "a", a);
    return 0;
}

是連線符,用來連線變數名例如:

#include <stdio.h>

#define V(x)  var##x
int main()
{
    int var1=123,var2=222,var3=321;
    printf("%d\n",V(1));
    printf("%d\n",V(2));
    printf("%d\n",V(3));
    return 0;
}

預編譯展開的部分程式碼

#define V(x)  var##x
int main()
{
    int var1=123,var2=222,var3=321;
    printf("%d\n",var1);
    printf("%d\n",var2);
    printf("%d\n",var3);
    return 0;
}

注意:

只能使用常量,不能使用變數的值,巨集也不會進行展開操作

以下為錯誤操作

#include <stdio.h>

#define V(x)  var##x
#define P   1
int main()
{
    int var1=123,var2=222,var3=321;
    printf("%d\n",V(P));
    return 0;
}
#include <stdio.h>

#define V(x)  var##x
int main()
{
    int P=1;
    int var1=123,var2=222,var3=321;
    printf("%d\n",V(P));
    return 0;
}

例子忘記哪裡摘抄的了,如有問題立即修改或刪除