我不知道我要完成的目标是否可行。我是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/