高效检查函数中的NULL指针数百万次

时间:2014-07-08 10:05:01

标签: c

我正在向一个库中添加一个函数,该函数有望被调用数百万次。什么是最有效的方法来检查函数是否传递一个NULL指针并退出,如果它是,并继续,如果没有给出预期传递的指针将在大多数时间是非NULL。任何指针都会受到欢迎......

由于

1 个答案:

答案 0 :(得分:0)

GNU C编译器有一个__builtin_expect来告诉优化器一个值最可能的结果。

虽然它不是标准的C.

您可以#define宏来包装它并根据编译器有条件地切换要使用的定义。

Linux内核以这种方式使用它(include / linux / compiler.h):

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

ifs然后成为:

if (likely(an_expression)) { ... } 

if (unlikely(another_expression)) { ... }