我不是专家,所以请放轻松。这两个代码段有什么区别吗?
#define BIT3 (0x1
<
<
3)
static int a;
和
#define BIT3 (0x1 << 3) static int a;
另外,有没有办法在一行中写第一个?这种多线样式的意义何在?下面的代码好吗?
#define BIT3 (0x1 << 3)
static int a;
最佳答案
如果您有一个非常复杂的宏,如果它全部位于一行将难以阅读(尽管不建议使用非常复杂的宏),则多行宏很有用。
通常,您可以使用续行字符 \
编写多行定义。 .所以例如
#define MY_MACRO printf( \
"I like %d types of cheese\n", \
5 \
)
但是你不能在你的第一个例子中做到这一点。你不能像那样拆分 token ; <<
左移运算符必须始终在没有任何分隔空格的情况下编写,否则它将被解释为两个小于运算符。所以也许:
#define BIT3 (0x1 \
<< \
3) \
static int a;
现在相当于你的第二个例子。
[虽然我不确定那个宏会有什么用处!]
https://stackoverflow.com/questions/6281368/