/* ppp_util.h ユーティリティ author: K.Y (Programming Place Plus) version 1.0.2 '2017/4/14 ・各マクロの実装を見直し。 () の追加や、do-while の導入。 1.0.1 '2013/1/17 ・PPP_MIN、PPP_MAX、PPP_SAFE_FREE を追加。 1.0.0 '2012/6/23 */ #ifndef PPP_UTIL_H #define PPP_UTIL_H /* 変数の値を交換する 引数: type: 型の名前 a: 交換する変数 b: 交換する変数 例: int a = 10; int b = 20; PPP_SWAP(int,a,b); */ #define PPP_SWAP(type,a,b) do{type work = a; a = b; b = work;} while(0) /* 配列の要素数を得る */ #define PPP_SIZE_OF_ARRAY(array) (sizeof(array)/sizeof(array[0])) /* 2つの値のうち、小さい方を返す */ #define PPP_MIN(a, b) ((a) < (b) ? (a) : (b)) /* 2つの値のうち、大きい方を返す */ #define PPP_MAX(a, b) ((a) > (b) ? (a) : (b)) /* free関数の安全なラップ 引数: ptr: free関数に渡すポインタ。NULL を渡した場合は何も起こらない。 ptr に渡したポインタ変数には、NULL が代入される。 */ #define PPP_SAFE_FREE(ptr) do{ if( ptr != NULL ){ free(ptr); ptr = NULL; } } while(0) #endif