boost::format を使用して構造を出力しています。ただし、boost::format は「ビット フィールド」の処理に問題があるようです。次の例を参照してください。
// Linux: g++ test.cc -lboost_system
#include <cstdio>
#include <iostream>
#include <boost/format.hpp>
struct bits_t {
unsigned int io: 1;
unsigned int co;
};
int main(void) {
using std::cout;
using boost::format;
bits_t b; b.io = 1; b.co = 2;
printf("io = %d \n", b.io); // Okay
cout << format("co = %d \n") % b.co; // Okay
// cout << format("io = %d \n") % b.io; // Not Okay
return 0;
}
cout
私がコメントアウトした2番目に注意してください。ビットフィールドを出力しようとしますprintf
が、コンパイラは文句を言います:
`error: cannot bind bitfield ‘b.bits_t::io’ to ‘unsigned int&’
私は何を逃したのだろうか?ありがとう