忍者ブログ
C言語のマクロについてです。C言語のマクロには落とし穴が多いので、マクロをマスターして引っかからないようにしましょう。そしてC言語の達人になってください。
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

/*
	INCREMENT
	インクリメント

	<概要>
	引数に1を足す。指定値になったら0にする。
	<返却>
	1足された数
	<引数>
	x:インクリメント対象値
	max:最大値
	<備考>
	返却値はmaxにはならない。
	1足した後の値がmaxなら0を返却。
*/
#define INCREMENT(x, max) ((x) = ((x) + 1) % (max))
PR
/*
	DECREMENT
	デクリメント

	<概要>
	引数から1を引く。0なら指定値に戻す。
	<返却>
	1引かれた数
	<引数>
	x:デクリメント対象値
	max:最大値
	<備考>
	返却値はmax未満。
	1引いた後の値が負ならmax-1を返却。
*/
#define DECREMENT(x, max)	\
	(((x) = (x) - 1) < 0 ? ((x) = (max) - 1) : (x))
/*
	MEMBER_SIZE
	構造体メンバのサイズ取得

	<概要>
	指定された構造体のメンバのサイズを返す
	<返却>
	指定された構造体のメンバのサイズ
	<引数>
	type:構造体
	member:構造体のメンバ
	<備考>
	特になし
*/
#define MEMBER_SIZE(type, member) (sizeof(((type*)0)->member))
ブログ内検索
バーコード
アーカイブ

Copyright © [ C言語のマクロ ] All rights reserved.
Special Template : 忍者ブログ de テンプレート
Special Thanks : 忍者ブログ
Commercial message : [PR]