linux.conf.au, January 2003 PRACTICALITIES: GCC/ISO C Extensions Statement expressions ({ and }) #define get_cpu() ({ preempt_disable(); smp_processor_id(); }) Use: cpu = get_cpu(); __builtin_constant_p() #define test_bit(nr,addr) \ (__builtin_constant_p(nr) ? \ constant_test_bit((nr),(addr)) : \ variable_test_bit((nr),(addr))) More in gcc manual or info page ("C Extensions") Don't be *too* brave!