<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:blogChannel="http://backend.userland.com/blogChannelModule" >
  <channel>
  <title>C言語のマクロ</title>
  <link>https://macro.gjpw.net/</link>
  <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="https://macro.gjpw.net/RSS/" />
  <description>C言語のマクロについてです。C言語のマクロには落とし穴が多いので、マクロをマスターして引っかからないようにしましょう。そしてC言語の達人になってください。</description>
  <lastBuildDate>Tue, 30 Mar 2010 22:14:01 GMT</lastBuildDate>
  <language>ja</language>
  <copyright>© Ninja Tools Inc.</copyright>
  <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" />

    <item>
    <title>INSIDE 範囲内判定</title>
    <description>
    <![CDATA[<pre><code>/*
	INSIDE
	範囲内判定

	＜概要＞
	指定の範囲内かを判定する
	＜返却＞
	範囲内なら真。範囲外なら偽。
	＜引数＞
	x:判定対象
	a,b:範囲(a&lt;=bであること)
	＜備考＞
	引数の複数回評価有。
*/
#define INSIDE(x,a,b) ((x) &gt;= a && (x) &lt;= b)
</code></pre>]]>
    </description>
    <category>C言語マクロの例</category>
    <link>https://macro.gjpw.net/c%E8%A8%80%E8%AA%9E%E3%83%9E%E3%82%AF%E3%83%AD%E3%81%AE%E4%BE%8B/inside%20%E7%AF%84%E5%9B%B2%E5%86%85%E5%88%A4%E5%AE%9A</link>
    <pubDate>Tue, 30 Mar 2010 22:14:01 GMT</pubDate>
    <guid isPermaLink="false">macro.gjpw.net://entry/35</guid>
  </item>
    <item>
    <title>IN4 集合要素判定</title>
    <description>
    <![CDATA[<pre><code>/*
	IN4
	集合要素判定

	＜概要＞
	指定の集合に属するかを判定する
	＜返却＞
	要素なら真。要素でなければ偽。
	＜引数＞
	x:判定対象
	a〜d:集合要素
	＜備考＞
	引数の複数回評価有。
*/
#define IN2(x,a,b) ((x) == a || (x) == b)
#define IN3(x,a,b,c) ((x) == a || (x) == b || (x) == c)
#define IN4(x,a,b,c,d) ((x) == a || (x) == b || (x) == c || (x) == d)
</code></pre>]]>
    </description>
    <category>C言語マクロの例</category>
    <link>https://macro.gjpw.net/c%E8%A8%80%E8%AA%9E%E3%83%9E%E3%82%AF%E3%83%AD%E3%81%AE%E4%BE%8B/in4%20%E9%9B%86%E5%90%88%E8%A6%81%E7%B4%A0%E5%88%A4%E5%AE%9A</link>
    <pubDate>Tue, 30 Mar 2010 22:05:56 GMT</pubDate>
    <guid isPermaLink="false">macro.gjpw.net://entry/34</guid>
  </item>
    <item>
    <title>BEEP 警告音を鳴らす</title>
    <description>
    <![CDATA[<pre><code>/*
	BEEP
	警告音を鳴らす

	＜概要＞
	警告音を鳴らす
	＜返却＞
	出力文字数。失敗の場合EOF。
	＜引数＞
	なし
	＜備考＞
	特になし
*/
#define BEEP() (fputc('\a', stderr))
</code></pre>]]>
    </description>
    <category>C言語マクロの例</category>
    <link>https://macro.gjpw.net/c%E8%A8%80%E8%AA%9E%E3%83%9E%E3%82%AF%E3%83%AD%E3%81%AE%E4%BE%8B/beep%20%E8%AD%A6%E5%91%8A%E9%9F%B3%E3%82%92%E9%B3%B4%E3%82%89%E3%81%99</link>
    <pubDate>Tue, 30 Mar 2010 12:51:17 GMT</pubDate>
    <guid isPermaLink="false">macro.gjpw.net://entry/33</guid>
  </item>
    <item>
    <title>MEMBER_SIZE 構造体メンバのサイズ取得</title>
    <description>
    <![CDATA[<pre><code>/*
	MEMBER_SIZE
	構造体メンバのサイズ取得

	＜概要＞
	指定された構造体のメンバのサイズを返す
	＜返却＞
	指定された構造体のメンバのサイズ
	＜引数＞
	type:構造体
	member:構造体のメンバ
	＜備考＞
	特になし
*/
#define MEMBER_SIZE(type, member) (sizeof(((type*)0)-&gt;member))
</code></pre>]]>
    </description>
    <category>C言語マクロの例</category>
    <link>https://macro.gjpw.net/c%E8%A8%80%E8%AA%9E%E3%83%9E%E3%82%AF%E3%83%AD%E3%81%AE%E4%BE%8B/member_size%20%E6%A7%8B%E9%80%A0%E4%BD%93%E3%83%A1%E3%83%B3%E3%83%90%E3%81%AE%E3%82%B5%E3%82%A4%E3%82%BA%E5%8F%96%E5%BE%97</link>
    <pubDate>Tue, 30 Mar 2010 12:35:11 GMT</pubDate>
    <guid isPermaLink="false">macro.gjpw.net://entry/32</guid>
  </item>
    <item>
    <title>DECREMENT デクリメント</title>
    <description>
    <![CDATA[<pre><code>/*
	DECREMENT
	デクリメント

	＜概要＞
	引数から1を引く。0なら指定値に戻す。
	＜返却＞
	1引かれた数
	＜引数＞
	x:デクリメント対象値
	max:最大値
	＜備考＞
	返却値はmax未満。
	1引いた後の値が負ならmax-1を返却。
*/
#define DECREMENT(x, max)	\
	(((x) = (x) - 1) &lt; 0 ? ((x) = (max) - 1) : (x))
</code></pre>]]>
    </description>
    <category>C言語マクロの例</category>
    <link>https://macro.gjpw.net/c%E8%A8%80%E8%AA%9E%E3%83%9E%E3%82%AF%E3%83%AD%E3%81%AE%E4%BE%8B/decrement%20%E3%83%87%E3%82%AF%E3%83%AA%E3%83%A1%E3%83%B3%E3%83%88</link>
    <pubDate>Tue, 30 Mar 2010 12:16:47 GMT</pubDate>
    <guid isPermaLink="false">macro.gjpw.net://entry/31</guid>
  </item>
    <item>
    <title>INCREMENT インクリメント</title>
    <description>
    <![CDATA[<pre><code>/*
	INCREMENT
	インクリメント

	＜概要＞
	引数に1を足す。指定値になったら0にする。
	＜返却＞
	1足された数
	＜引数＞
	x:インクリメント対象値
	max:最大値
	＜備考＞
	返却値はmaxにはならない。
	1足した後の値がmaxなら0を返却。
*/
#define INCREMENT(x, max) ((x) = ((x) + 1) % (max))
</code></pre>]]>
    </description>
    <category>C言語マクロの例</category>
    <link>https://macro.gjpw.net/c%E8%A8%80%E8%AA%9E%E3%83%9E%E3%82%AF%E3%83%AD%E3%81%AE%E4%BE%8B/increment%20%E3%82%A4%E3%83%B3%E3%82%AF%E3%83%AA%E3%83%A1%E3%83%B3%E3%83%88</link>
    <pubDate>Mon, 29 Mar 2010 22:20:02 GMT</pubDate>
    <guid isPermaLink="false">macro.gjpw.net://entry/30</guid>
  </item>
    <item>
    <title>DEBUG_PRINT デバッグ用出力</title>
    <description>
    <![CDATA[<pre><code>/*
	DEBUG_PRINT
	デバッグ用出力

	＜概要＞
	指定のパラメータで標準エラー出力に出力する
	＜返却＞
	書き出された文字数。失敗なら負の値。
	＜引数＞
	...:出力書式と内容
	＜備考＞
	出力方法はprintfと同じ。
	マクロの可変引数はC99より。
*/
#define DEBUG_PRINT(...) (fprintf(stderr, __VA_ARGS__))
</code></pre>]]>
    </description>
    <category>C言語マクロの例</category>
    <link>https://macro.gjpw.net/c%E8%A8%80%E8%AA%9E%E3%83%9E%E3%82%AF%E3%83%AD%E3%81%AE%E4%BE%8B/debug_print%20%E3%83%87%E3%83%90%E3%83%83%E3%82%B0%E7%94%A8%E5%87%BA%E5%8A%9B</link>
    <pubDate>Mon, 29 Mar 2010 22:12:34 GMT</pubDate>
    <guid isPermaLink="false">macro.gjpw.net://entry/29</guid>
  </item>
    <item>
    <title>MIN3 最小値取得</title>
    <description>
    <![CDATA[<pre><code>/*
	MIN3
	最小値取得

	＜概要＞
	指定された3引数のうちの最小のものを返す
	＜返却＞
	最小値
	＜引数＞
	a,b,c:最小値を選ぶ対象
	＜備考＞
	引数の複数回評価有。
*/
#define MIN2(a, b) ((a) &lt; (b) ? (a) : (b))
#define MIN3(a, b, c) ((a) &lt; (MIN2(b, c)) ? (a) : (MIN2(b, c)))
</code></pre>]]>
    </description>
    <category>C言語マクロの例</category>
    <link>https://macro.gjpw.net/c%E8%A8%80%E8%AA%9E%E3%83%9E%E3%82%AF%E3%83%AD%E3%81%AE%E4%BE%8B/min3%20%E6%9C%80%E5%B0%8F%E5%80%A4%E5%8F%96%E5%BE%97</link>
    <pubDate>Mon, 29 Mar 2010 12:41:22 GMT</pubDate>
    <guid isPermaLink="false">macro.gjpw.net://entry/28</guid>
  </item>
    <item>
    <title>MAX3 最大値取得</title>
    <description>
    <![CDATA[<pre><code>/*
	MAX3
	最大値取得

	＜概要＞
	指定された3引数のうちの最大のものを返す
	＜返却＞
	最大値
	＜引数＞
	a,b,c:最大値を選ぶ対象
	＜備考＞
	引数の複数回評価有。
*/
#define MAX2(a, b) ((a) &gt; (b) ? (a) : (b))
#define MAX3(a, b, c) ((a) &gt; (MAX2(b, c)) ? (a) : (MAX2(b, c)))
</code></pre>]]>
    </description>
    <category>C言語マクロの例</category>
    <link>https://macro.gjpw.net/c%E8%A8%80%E8%AA%9E%E3%83%9E%E3%82%AF%E3%83%AD%E3%81%AE%E4%BE%8B/max3%20%E6%9C%80%E5%A4%A7%E5%80%A4%E5%8F%96%E5%BE%97</link>
    <pubDate>Mon, 29 Mar 2010 12:38:04 GMT</pubDate>
    <guid isPermaLink="false">macro.gjpw.net://entry/27</guid>
  </item>
    <item>
    <title>CALC_CLOCK 処理時間表示</title>
    <description>
    <![CDATA[<pre><code>/*
	CALC_CLOCK
	処理時間表示

	＜概要＞
	ソースコードとループ回数を指定すると
	処理にかかったプロセッサ時間を表示する
	＜返却＞
	なし
	＜引数＞
	code:ソースコード
	n:ループ回数
	＜備考＞
	使用例:CALC_CLOCK(x = cos(x), 1000000UL);
*/
#define CALC_CLOCK(code, n) do {	\
	int i;	\
	clock_t t = clock();	\
	for (i=0;i&lt;n;i++) { code; }	\
	printf("%d\n", clock() - t);	\
} while (0)
</code></pre>]]>
    </description>
    <category>C言語マクロの例</category>
    <link>https://macro.gjpw.net/c%E8%A8%80%E8%AA%9E%E3%83%9E%E3%82%AF%E3%83%AD%E3%81%AE%E4%BE%8B/calc_clock%20%E5%87%A6%E7%90%86%E6%99%82%E9%96%93%E8%A1%A8%E7%A4%BA</link>
    <pubDate>Mon, 29 Mar 2010 12:25:08 GMT</pubDate>
    <guid isPermaLink="false">macro.gjpw.net://entry/26</guid>
  </item>

    </channel>
</rss>