多行#define 按位或

Multi-line #define bitwise OR

我正在尝试实现如下的#define:

#define CTRL_EVENT EVT_0 | EVT_1 | EVT_2 | EVT_3 | EVT_4 | EVT_5 | EVT_6 | EVT_7 | EVT_8 | EVT_9 

但实际上 #define 会更长,所以我希望能够将这一行拆分为多行以提高可读性,有没有办法做到这一点?

换行符前的反斜杠作为续行符。所以你可以这样做:

#define CTRL_EVENT \
    (EVT_0 | EVT_1 | EVT_2 | EVT_3 | \
     EVT_4 | EVT_5 | EVT_6 | EVT_7 | \
     EVT_8 | EVT_9)

另请注意圆括号,它可以防止在较大的表达式中出现意外的运算符分组。