2011-09-14 42 views
0

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

struct CARINFO a; 

当我的函数需要的CARINFO a的说法,我想在功能同时使用a"a"

任何人都可以帮忙吗?

+0

我*想*你在谈论C语言,你能证实这一点吗? –

+0

如果您说要达到目的的目的可能会提供更好的答案,但简短答案是否定的,您不能这样做。 –

+0

是的,这是在c。 这就是汽车信息结构的样子。 { \t/*汽车正面的位置。由于所有车辆都假设为 \t要面向北或西,该位置代表 \t该车的西北段*/ \t LOCATION front; \t/*汽车的方向*/ \t定位方向; \t/*车的长度*/ \t int length; } CARINFO; 不幸的是我无法改变它。 – pseudoabdul

回答

1

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

0

你可以通过将函数变成一个宏,并使用#运算符(字符串化)来获取hte参数的名称。

例如:

#define MYFUNC(x) \ 
do { real_func(x); printf("parameter name: " #x "\n"); } while (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); 
}