c++ - 多行 DEFINE 指令?

我不是专家,所以请放轻松。这两个代码段有什么区别吗?

#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/

相关文章:

c++ - std::vector 与 std::list 与 std::slist 的相对性能?

c++ - 如何在 GCC 搜索路径中包含头文件?

c++ - 为什么 C/C+ +'s "#pragma once"不是 ISO 标准?

c++ - queue::push 后双重释放或损坏

c++ - 是否有可以解析 C++ 的优秀 Python 库?

c++ - 为什么优化会杀死这个功能?

c++ - 内存分配是系统调用吗?

c++ - 在 std::map 中更改元素键的最快方法是什么

c++ - 使用 C++ 基类构造函数?

c++ - std::tuple get() 成员函数