作为结构调用的一部分,如何在一行中组成一个变量名?

How to compose a variable name in one line, as part of struct call?

我完全不知道我想要完成的事情是否可行。我是 C 的新手。

我有一个包含指向另一个结构的指针的结构,它包含另一个指向另一个结构的指针。 最后一个结构包含两个指向名为 "leadingToCw" 和 "leadingToCcW" 的结构的指针。我还有一个全局字符串变量 dir,它可以在任何时间点从 Cw 更改为 Ccw。它看起来像这样:

#define concat(a,b) a##b
String dir = "Ccw"; // or "Cw"

struct Intersection {
    struct Sector *incoming;
}

struct Sector {
    struct Sector *leadingToCcw;
    struct Sector *leadingToCw;
};

现在我想要的是根据 "dir" 字符串调用 leadingToCcw 或 leadingToCw,以便输出如下所示:

Intersection->incoming->leadingToCcw

我试过这样的事情:

Intersection->incomming->(dir == "Ccw" ? concat(leadingTo, Ccw) : concat(leadingTo, Cw))

但我得到这个错误:

error: expected unqualified-id before '(' token

我不知道它是否值得一提,但它是针对 Arduino 项目的:-) 希望有人能帮帮我,或者踢我屁股告诉我不可行!

为什么不使用通常的条件?

dir == "Ccw"? Intersection->incomming->leadingToCcw : Intersection->incomming->leadingToCw

在 C 中没有像 String 这样的东西。您可以使用 char * 代替

char *dir = "Ccw";

if (strcmp(dir, "Ccw") == 0)
{
// Do whatever you want to do with Intersection->incomming->leadingToCcw
}
else if (strcmp(dir, "Cw") == 0)
{
// Do whatever you want to do with Intersection->incomming->leadingToCw
}