如何根据字符串的值访问`struct’的成员?
我想通过使用字符串的值来访问结构中的成员:
struct hello_world { char rate; char ssid; };
有一个varibale让我们说
char *string="ssid";
我想使用此字符串的值来引用hello_world
结构中的ssid
成员。 这可能吗?
不,不是。
你需要一个(长) 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; }
此方法比比较字符串更快。
如果只使用一个字段或另一个字段,则可以使用union而不是struct。
定义一个函数,就像一个包装器,可以将所需的成员传递回去。
char GiveMember(struct hello_world, char* member){ }
但语言本身并没有为你提供这样的东西。