【问题标题】:Converting struct into a char将结构转换为字符
【发布时间】:2011-09-14 08:30:31
【问题描述】:

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

struct CARINFO a;

当我的函数接受CARINFO a 的参数时,我想在函数中同时使用a 和"a"。

谁能帮忙?

【问题讨论】:

  • 我认为你说的是C语言,你能确认一下吗?
  • 如果你说你想这样做的目的可能会提供更好的答案,但简短的回答是不,你不能这样做。
  • 是的,这是在 c 中。这就是汽车信息结构的样子。 { /* 汽车前部的位置。由于假定所有汽车都面向北或西,因此该位置代表汽车 /LOCATION 前方的西北段; / 小车的方位/ ORIENTATION 方位; / 汽车的长度 */ int length; } 卡罗夫;不幸的是我无法改变它。

标签: c struct char


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      您可以通过将函数制作成宏,并使用 # 运算符(字符串化)来获取 hte 参数的名称来做到这一点。

      例如:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-06-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多