Browse Source Download (without any required ccan dependencies)

Module:

likely

Summary:

macros for annotating likely/unlikely branches in the code

Author:

Rusty Russell <rusty@rustcorp.com.au>

Dependencies:

Description:

Inspired by Andi Kleen's macros for the Linux Kernel, these macros help you annotate rare paths in your code for the convenience of the compiler and the reader.

With CCAN_LIKELY_DEBUG defined, it provides statistics for each likely()/unlikely() call (but note that this requires LGPL dependencies).

Example:

#include <ccan/likely/likely.h>
#include <stdio.h>

int main(int argc, char *argv[])
{
        // This example is silly: the compiler knows exit() is unlikely.
        if (unlikely(argc == 1)) {
                fprintf(stderr, "Usage: %s <args>...\n", argv[0]);
                return 1;
        }
        for (argc++; argv[argc]; argc++)
                printf("%s\n", argv[argc]);
        return 0;
}

License:

CC0 (Public domain)