编写一个使用传递的参数名称的可变参数宏

use*_*040 4 c macros variadic-functions variadic-macros

我想写一个变量宏,它以某种方式知道传递的参数的名称.例如:

代码:

int x = 2;
float f = 4.6;
char c = 'A';
char* str = "Bla bla";
PRINT("%d  %f %c  %s", x, f, c, str);     // calling the macro
Run Code Online (Sandbox Code Playgroud)

应产生输出

x=2 f=4.6 c=A str=Bla bla.
Run Code Online (Sandbox Code Playgroud)

希望有人知道答案.

Lee*_*hem 5

关闭但不完全(仅适用于单个表达式)提问者需要的内容:

#define PRINT(fmt, var) printf(#var " = " fmt, (var))
Run Code Online (Sandbox Code Playgroud)

这是一个例子:

#include <stdio.h>
#include <stdlib.h>

#define PRINT(fmt, var) printf(#var " = " fmt, (var))

int
main(int argc, char *argv[])
{
    int x = 2, y = 3;
    float f = 4.6;
    char c = 'A';
    char *str = "Bla bla";
    PRINT("%d\n", x);
    PRINT("%f\n", f);
    PRINT("%c\n", c);
    PRINT("%s\n", str);
    PRINT("%d\n", x+y);
    exit(EXIT_SUCCESS);
}
Run Code Online (Sandbox Code Playgroud)