如何根据字符串的值访问`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){ } 

但语言本身并没有为你提供这样的东西。