在C中打印通用变量的名称和值

时间:2013-09-11 05:06:01

标签: c generics pragma

我想将同一行的两个fprintf()次调用合并为一个函数调用,例如fprintf_together_with_variable_name(FILE* fpheader, FILE* fpresult, char* f_str,...)

我的MWE:

#include <stdio.h>
#define var2str(e) (#e)
int main() {
        FILE* fpresult = fopen("result.txt", "a");
        FILE* fpheader = fopen("header.txt", "w");
        char* mtx = "web-Google.mtx";
        double time = 3.452;
        int flop = 7684;
        fprintf(fpresult, "%s\t", mtx);         fprintf(fpheader, "%s\t", var2str(mtx));
        fprintf(fpresult, "%g\t", time);        fprintf(fpheader, "%s\t", var2str(time));
        fprintf(fpresult, "%d\t", flop);        fprintf(fpheader, "%s\t", var2str(flop));

        fprintf(fpresult, "\n");                fprintf(fpheader, "\n");
        fclose(fpresult);
        fclose(fpheader);
        return 0;
}

为每种类型intdoublechar*编写一个函数或将变量的名称作为字符串传递很容易;但是,拥有一个只接受变量并处理所有类型的泛型函数会很棒。

1 个答案:

答案 0 :(得分:3)

有点难看,但你试过吗

#define var2str(e) e,#e
fprintf(fpresult, "%s\t%s\t", var2str(mtx));

甚至更丑陋:P

#define var2str(e) " %s\t", e,#e
fprintf(fpresult, "%s\t"var2str(mtx));

我认为这应该有用。