小编zqz*_*ao5的帖子

在C++中混淆宏定义

最近,我正在阅读B-Human的一些代码,我发现了这个令人困惑的片段:

void enumInit(char* enums, const char** names, int numOfEnums);

#define ENUM(Enum, ...) \
  enum Enum : unsigned char {__VA_ARGS__, numOf##Enum##s}; \
  inline static const char* getName(Enum e) \
  { \
    static char enums[] = #__VA_ARGS__; \
    static const char* names[numOf##Enum##s]; \
    static bool init = true; \
    if(init) \
    { \
      enumInit(enums, names, numOf##Enum##s); \
      init = false; \
    } \
    return e >= numOf##Enum##s ? 0 : names[e]; \
  }
Run Code Online (Sandbox Code Playgroud)

我无法理解这个宏是如何工作的,它怎么可能是宏定义中的函数定义?它是#pragma一次的单个cpp头文件.

c++ macros

5
推荐指数
1
解决办法
152
查看次数

标签 统计

c++ ×1

macros ×1