少于 1 分钟阅读

  • 宏定义 描述文件 zzz.md
1
2
3
4
5
6
7
8
9
10
      // define fpga_instruction
      #ifndef DEF_ZZZ
      #error "Must define ZZZ first"
      #endif
      // DEF_ZZZ(FIELD,BITSIZE)
      DEF_ZZZ(one,1)
      DEF_ZZZ(two, 1)
      DEF_ZZZ(three, 1)
      DEF_ZZZ(four, 1)
  • 定义结构体 头文件 zzz.h
1
2
3
4
5
6
7
      struct ZZZ {
      #define ZZZ(field, bitsize) \
         unsigned int field : bitsize;
      #include "zzz.md"
      #undef DEF_ZZZ
      }__attribute__((packed));
  • ToString 方法 .cc 文件 zzz.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
      #include <iostream>
      #include <string>

      #include "zzz.h"

      class ZZZ {
        ZZZ(){};
        ZZZ(){};
      public:
        string ToString(struct ZZZ *) {
      #define DEF_ZZZ(field, bitsize) \
          std::cout << (#field) << ":" << this->field << " bitsize " << std::to_string(bitsize) << std::endl;
      #include "zzz.md"
      #undef DEF_ZZZ
        }
      };

      int main() {
          ZZZ obj;
          struct ZZZ *z;
          obj.ToString(z);
      }

分类:

更新时间: