在类

时间:2016-08-17 18:19:35

标签: c++ padding

我试图制作一个用于填充我在游戏黑客中使用的类的宏。让我告诉你我想做什么:

#define pad(loc, size)  private: \
                    char _pad#loc[#size]; \
                    public:

然后我想用它:

class C_VTable {
public:
   float member;          // <- public
   pad(0x4, 0x30);        // <- private im not sure how to make the pad name be like pad0x4
   float anothermember;   // <- public again
};

我怎么能这样做,因为我得到一个错误说它预期了; 有点乱,但我希望你明白。

非常感谢任何帮助:)

1 个答案:

答案 0 :(得分:4)

使用##粘贴运算符将两个标记组合在一起。另外,请勿使用#对大小进行字符串化 - 您不希望方括号内有字符串。

#define pad(loc, size)  private: \
                    char __pad##loc[size]; \
                    public: