我有一个问题,我需要将结构变量的名称转换为char
。例如:
struct CARINFO a;
当我的函数采用CARINFO a
的参数时,我想在函数中同时使用a
和"a"
。
有人可以帮忙吗?
答案 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)