C templet and switch case with serial number
1 /************************************************************************** 2 * C templet and switch case with serial number 3 * 声明: 4 * 1、本文参考《Android底层开发技术实战详解--内核、移植和驱动》。 5 * 2、其中书上泛形部分写法有错,需要在行尾加上反斜杠。 6 * 7 * 2015-7-19 晴 深圳 南山平山村 曾剑锋 星期日 8 *************************************************************************/ 9 #include <stdio.h> 10 11 /** 12 * 实现了C++里的泛形的写法,也就是模板 13 */ 14 #define min( x, y ) ({ \ 15 typeof(x) _min1 = (x); \ 16 typeof(y) _min2 = (y); \ 17 _min1 < _min2 ? _min1 : _min2; }) \ 18 19 int main( int argc, char** argv ) { 20 printf( "min(1, 2) = %d", min( 1, 2 ) ); 21 22 int major_idx = 3; 23 switch ( major_idx ) { 24 case 0: 25 printf( " 0.\n"); 26 break; 27 case 1 ... 4: // 一定要记得...两边有空格 28 printf( " 0...4.\n"); 29 break; 30 default: 31 printf( "default.\n"); 32 break; 33 } 34 }