代码之家  ›  专栏  ›  技术社区  ›  Vinit Dhatrak

用户空间代码中是否可以使用可能/不可能的宏?

  •  24
  • Vinit Dhatrak  · 技术社区  · 16 年前

    3 回复  |  直到 9 年前
        1
  •  43
  •   SamB som-snytt    12 年前

    是的,他们可以。 In the Linux kernel ,它们被定义为

    #define likely(x)       __builtin_expect(!!(x), 1)
    #define unlikely(x)     __builtin_expect(!!(x), 0)
    

    内置expect宏是使用分支预测的特定于GCC的宏;它们告诉处理器某个条件是否可能为真,以便处理器可以在分支的正确“一侧”预取指令。

    应将定义包装在ifdef中,以确保在其他编译器上编译:

    #ifdef __GNUC__
    #define likely(x)       __builtin_expect(!!(x), 1)
    #define unlikely(x)     __builtin_expect(!!(x), 0)
    #else
    #define likely(x)       (x)
    #define unlikely(x)     (x)
    #endif
    

        3
  •  4
  •   Ken Bloom    16 年前

    可能()和不可能()宏是在内核头中为以下内容定义的漂亮名称: 真正的 gcc feature

    推荐文章