在 C 语言中迭代结构体的成员
给定一个结构体定义:
<code class="c++">typedef struct A { int a; int b; char * c; } aA;</code>
我们可以迭代它的成员并使用 Boost Fusion/Phoenix 等技术打印它们的值。
使用 Boost Fusion,我们可以调整结构以进行融合:
<code class="c++">#include <boost/fusion/adapted/struct.hpp> BOOST_FUSION_ADAPT_STRUCT(A, (int, a)(int, b)(std::string, c));</code>
然后使用 Boost Phoenix 迭代其成员:
<code class="c++">#include <boost/phoenix/phoenix.hpp> using boost::phoenix::arg_names::arg1; void print_struct_value(A const& obj) { boost::fusion::for_each(obj, std::cout << arg1 << "\n"); }</code>
示例用法:
<code class="c++">int main() { const A obj = { 1, 42, "The Answer To LtUaE" }; print_struct_value(obj); }</code>
这将输出成员值:
1 42 The Answer To LtUaE
以上是如何使用 Boost Fusion 和 Phoenix 在 C 中迭代结构体的成员?的详细内容。更多信息请关注PHP中文网其他相关文章!