A multi-line macro is useful if you have a very complex macro which would be difficult to read if it were all on one line (although it's inadvisable to have very complex macros).
In general, you can write a multi-line define using the line-continuation character,
. So e.g.
#define MY_MACRO printf(
"I like %d types of cheese
",
5
)
But you cannot do that with your first example. You cannot split tokens like that; the <<
left-shift operator must always be written without any separating whitespace, otherwise it would be interpreted as two less-than operators. So maybe:
#define BIT3 (0x1
<<
3)
static int a;
which is now equivalent to your second example.
[Although I'm not sure how that macro would ever be useful!]
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…