且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何连接,评估和字符串化宏?

更新时间:2023-02-03 09:21:20

尝试一下:

#include <stdio.h>

#define FOO_ONE 12
#define FOO_TWO 34
#define BAR_ONE 56
#define BAR_TWO 78

#define STRINGIFY(arg) #arg
#define CONCAT(arg1, arg2) STRINGIFY(arg1) STRINGIFY(arg2)

#define MAC(arg) CONCAT(arg##_ONE, arg##_TWO)

int main(){

    printf("FOO: " MAC(FOO) "\n");
    printf("BAR: " MAC(BAR) "\n");

    return 0;
}

我的输出:

FOO: 1234
BAR: 5678