将struct转换为char

时间:2011-09-14 08:30:31

标签: c struct char

我有一个问题,我需要将结构变量的名称转换为char。例如:

struct CARINFO a;

当我的函数采用CARINFO a的参数时,我想在函数中同时使用a"a"

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:2)

您可以使用宏将指向结构的指针及其名称传递给实际函数。

struct bar {
    // blah
};

void actual_foo(struct bar *b, char *bname) {
    // whatever
}

#define foo(bar) actual_foo(&(bar), #bar)

int main() {
    struct bar b;
    foo(b);
}

答案 1 :(得分:1)

您在C中可以做的最好的事情是使用单个宏来定义字符串和变量。没有运行时检查可以让您重新发现变量的名称。

答案 2 :(得分:0)

您可以通过将函数转换为宏来实现,并使用#运算符(stringification)来获取hte参数的名称。

例如:

#define MYFUNC(x) \
do { real_func(x); printf("parameter name: " #x "\n"); } while (0)