Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 将结构转换为字符_C_Struct_Char - Fatal编程技术网

C 将结构转换为字符

C 将结构转换为字符,c,struct,char,C,Struct,Char,我有一个问题,需要将结构变量的名称转换为char。例如: struct CARINFO a; #define MYFUNC(x) \ do { real_func(x); printf("parameter name: " #x "\n"); } while (0) 当我的函数接受参数CARINFO a时,我希望在函数中同时使用a和“a” struct bar { // blah }; void actual_foo(struct bar *b, char *bname) {

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

struct CARINFO a;
#define MYFUNC(x) \
do { real_func(x); printf("parameter name: " #x "\n"); } while (0)
当我的函数接受参数
CARINFO a
时,我希望在函数中同时使用
a
“a”

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);
}

有人能帮忙吗?

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

在C中,您最好使用一个宏来定义字符串和变量。没有运行时检查允许您重新发现变量的名称。

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

例如:

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

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

例如:

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

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

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);
}

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

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);
}

我想你说的是C语言,你能证实这一点吗?如果你说你想这样做的目的是什么,可能会提供更好的答案,但简短的回答是不,你不能这样做。是的,这是C语言。这就是汽车信息结构的外观。{/*汽车前部的位置。由于假设所有汽车都面向北方或西方,因此该位置表示汽车的西北段/位置前部;/汽车的方向/方向方向方向;/汽车的长度*/int length;}CARINFO;不幸的是,我不能改变它。我想你说的是C语言,你能证实这一点吗?如果你说你想这样做的目的是什么,可能会提供更好的答案,但简短的回答是不,你不能这样做。是的,这是C语言。这就是汽车信息结构的外观。{/*汽车前部的位置。由于假设所有汽车都面向北方或西方,因此该位置表示汽车的西北段/位置前部;/汽车的方向/方向方向方向;/汽车的长度*/int length;}CARINFO;不幸的是,我不能改变它。