|
Comprehensive C Archive Network |
|---|
| Upload Code | Download Code | About |
| Browse Source | Download (without any required ccan dependencies) |
Module:compiler |
Summary:macros for common compiler extensions |
Author:Rusty Russell <rusty@rustcorp.com.au> |
Description:Abstracts away some compiler hints. Currently these include: - COLD For functions not called in fast paths (aka. cold functions) - PRINTF_FMT For functions which take printf-style parameters. - CONST_FUNCTION For functions which return the same value for same parameters. - NEEDED For functions and variables which must be emitted even if unused. - UNNEEDED For functions and variables which need not be emitted if unused. - UNUSED For parameters which are not used. - IS_COMPILE_CONSTANT() For using different tradeoffs for compiletime vs runtime evaluation. |
Example:#include <ccan/compiler/compiler.h>
#include <stdio.h>
#include <stdarg.h>
// Example of a (slow-path) logging function.
static int log_threshold = 2;
static void COLD PRINTF_FMT(2,3)
logger(int level, const char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
if (level >= log_threshold)
vfprintf(stderr, fmt, ap);
va_end(ap);
}
int main(int argc, char *argv[])
{
if (argc != 1) {
logger(3, "Don't want %i arguments!\n", argc-1);
return 1;
}
return 0;
}
|
License:Public Domain |