且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

C templet and switch case with serial number

更新时间:2022-08-12 20:41:49

 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 }