4

我想通过使用字符串的值来访问结构中的成员:

struct hello_world
{
           char rate;
           char ssid;
};

有一个变量让我们说

char *string="ssid";

我想使用这个字符串的值来引用结构中的ssid成员hello_world。这可能吗?

4

3 回答 3

6

不,不是。

你需要一个(长)if-else语句,它会做到这一点。喜欢:

struct hello_world hw;
char *string="ssid";

if( 0 == strcmp( "ssid", string ) )
{
     // use hw.ssid
}
else if ...
于 2013-03-22T10:01:13.470 回答
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;
}

这种方法比比较字符串要快得多。

如果您只使用一个字段另一个,您可以使用联合而不是结构。

于 2013-03-22T10:05:26.523 回答
0

定义一个函数,比如一个包装器来传递你想要的成员。

char GiveMember(struct hello_world, char* member){ }

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

于 2013-03-22T10:02:00.640 回答