我想通过使用字符串的值来访问结构中的成员:
struct hello_world
{
char rate;
char ssid;
};
有一个varibale让我们说
char *string="ssid";
我想使用此字符串的值来引用ssid
结构中的hello_world
成员。这可能吗?
答案 0 :(得分:5)
不,不是。
你需要一个(长)if-else
语句来执行此操作。像:
struct hello_world hw;
char *string="ssid";
if( 0 == strcmp( "ssid", string ) )
{
// use hw.ssid
}
else if ...
答案 1 :(得分:2)
不要使用字符串,最好使用包含所有可能情况的枚举。
typedef enum {
FIELD_SSID,
FIELD_RATE,
} field_t
field_t string;
然后使用开关
switch (string) {
case FIELD_SSID:
//use ssid
break;
case FIELD_RATE:
//use rate
break;
}
此方法比比较字符串更快。
如果你只使用另一个字段 OR ,你可以使用union而不是struct。
答案 2 :(得分:0)
定义一个函数,就像一个包装器,可以将所需的成员传递回去。
char GiveMember(struct hello_world, char* member){ }
但语言本身并没有为你提供这样的东西。