如何使用宏C++获取带有字符串的struct成员

ulu*_*lu5 5 c++ macros

请考虑以下示例:

struct MyStruct {
    int a;
    int b;
};
Run Code Online (Sandbox Code Playgroud)

我可以通过这样做使用宏来从结构的实例设置成员:

#define setVar(x,y) instance.x = y
Run Code Online (Sandbox Code Playgroud)

然后我可以说任何功能:

setVar(a, 4)
Run Code Online (Sandbox Code Playgroud)

如何将字符串作为字符串发送到宏?这也可能吗?

setVar("a", 4)
Run Code Online (Sandbox Code Playgroud)

编辑:有一堆预定义的结构,其成员都是double类型.我只知道传入的XML配置文件使用的是什么结构.解析后,我有一堆字符串,它们是需要设置的所有数据成员和值的列表.我需要使用此列表为结构中的每个成员设置值.

use*_*672 7

只有使用某些宏定义结构本身才有可能,例如:

#define MY_STRUCT_STRUCTURE FIELD(a) FIELD(b) FIELD(d) FIELD(e) FIELD(f)

struct MyStruct {

# define FIELD(name) int name;
    MY_STRUCT_STRUCTURE
# undef FIELD

  bool setVar(char* fieldname, int val)
  {
#   define FIELD(name) if(strcmp(#name,fieldname)==0){name=val; return true;};
    MY_STRUCT_STRUCTURE
#   undef FIELD
    return false; // name not found
  }
};


int main()
{
  MyStruct s;
  s.setVar("a",1);
  s.setVar("b",2);
  s.setVar("f",100);
}
Run Code Online (Sandbox Code Playgroud)

  • 我认为这是有效的,但是,护目镜,他们并没有隐藏这些可怕的东西!Aarrrggghhhh. (2认同)