在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中文網其他相關文章!