Edit

thodg/cgminer/ccan/compiler/_info

Branch :

  • Show log

    Commit

  • Author : Rusty Russell
    Date : 2011-07-06 16:47:25
    Hash : a0d14d15
    Message : ccan: add ccan/opt and dependencies to build.

  • ccan/compiler/_info
  • #include <string.h>
    #include <stdio.h>
    #include "config.h"
    
    /**
     * compiler - macros for common compiler extensions
     *
     * 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.
     * - IDEMPOTENT
     *	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.
     *
     * License: LGPL (3 or any later version)
     * Author: Rusty Russell <rusty@rustcorp.com.au>
     *
     * 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;
     *	}
     */
    int main(int argc, char *argv[])
    {
    	/* Expect exactly one argument */
    	if (argc != 2)
    		return 1;
    
    	if (strcmp(argv[1], "depends") == 0) {
    		return 0;
    	}
    
    	return 1;
    }