我想通过使用字符串的值来访问结构中的成员:
struct hello_world
{
char rate;
char ssid;
};
有一个变量让我们说
char *string="ssid";
我想使用这个字符串的值来引用结构中的ssid
成员hello_world
。这可能吗?
不,不是。
你需要一个(长)if-else
语句,它会做到这一点。喜欢:
struct hello_world hw;
char *string="ssid";
if( 0 == strcmp( "ssid", string ) )
{
// use hw.ssid
}
else if ...
与其使用字符串,不如在所有可能的情况下使用枚举。
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;
}
这种方法比比较字符串要快得多。
如果您只使用一个字段或另一个,您可以使用联合而不是结构。
定义一个函数,比如一个包装器来传递你想要的成员。
char GiveMember(struct hello_world, char* member){ }
但是语言本身并没有为您提供这样的东西。