【发布时间】:2015-12-24 11:21:54
【问题描述】:
我正在寻找一种方法来解析 C 结构以获得变量的名称和类型。
例如我有这样的结构:
struct MyStruct {
int anInt ;
float aFloat ;
}
我需要获取类型 int 和 float 以及 2 个字符串“anInt”和“aFloat”。
在我必须在另一个函数中使用这些值之后:
addValue<int>("anInt") ;
add Value<float>("aFloat") ;
您知道如何在编译时自动执行此操作吗?
谢谢。
【问题讨论】:
-
如果你想解析一个包含结构的文本文件,这可以在运行时完成——搜索 C 解析器。如果您想在代码中执行此操作(将定义动态转换为另一个定义),您需要的是反射和运行时类型信息,它们在 C++ 中“不太好”(参见:en.wikibooks.org/wiki/C%2B%2B_Programming/RTTI)。
-
你到底为什么要问?你已经有多少结构了?请编辑您的问题以激发它并提供更多详细信息
-
这里缺少很多上下文,但是假设您控制原始结构,我将使用诸如 boost fusion 之类的库来声明原始结构。这使用宏来提供您正在寻找的功能。
标签: c++ metaprogramming template-meta-programming