我不知道我要完成的目标是否可行。我是C的新手。

我有一个结构,其中包含指向另一个结构的指针,其中包含另一个指向另一个结构的指针。
最后一个结构包含两个指向“ leadingToCw”和“ leadingToCcW”结构的指针。我还有一个全局String变量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 - 作为结构调用的一部分,如何在一行中组成一个变量名?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55724673/

10-11 22:13
查看更多