假设我有这个struct
(顺便说一句包含位域,但您不在乎):
struct Element {
unsigned int a1 : 1;
unsigned int a2 : 1;
...
unsigned int an : 1;
};
我想以一种方便的方式访问第i个成员(member)。让我们研究一个检索解决方案。
我想出了这个功能:
int getval(struct Element *ep, int n)
{
int val;
switch(n) {
case 1: val = ep->a1; break;
case 2: val = ep->a2; break;
...
case n: val = ep->an; break;
}
return val;
}
但是我怀疑有一个更简单的解决方案。也许像数组访问样式。
我试图做这样的事情:
#define getval(s,n) s.a##n
但预计它不起作用。
有更好的解决方案吗?
最佳答案
除非您对结构的基础结构有特定的了解,否则无法在C中实现这种方法。将遇到各种问题,包括
最好是为您的结构手动实现一种方法,该方法对结构的内部成员有深刻的了解。
关于c - 如何根据C中的变量整数访问 `struct'的成员?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/887852/