<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>いちばんやさしいゲームの作り方 &#187; コンパイラ</title>
	<atom:link href="http://www.game-create.com/archives/tag/%e3%82%b3%e3%83%b3%e3%83%91%e3%82%a4%e3%83%a9/feed" rel="self" type="application/rss+xml" />
	<link>http://www.game-create.com</link>
	<description>文系の人でも、数理学がわからない人でもゲームプログラミングをマスターできるブログ</description>
	<lastBuildDate>Tue, 08 Jun 2010 01:28:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Emacs 23.2 がリリースになったようです</title>
		<link>http://www.game-create.com/archives/3308</link>
		<comments>http://www.game-create.com/archives/3308#comments</comments>
		<pubDate>Tue, 11 May 2010 09:13:06 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ウェブログ]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Emacs]]></category>
		<category><![CDATA[make]]></category>
		<category><![CDATA[UML]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[エディタ]]></category>
		<category><![CDATA[クラス]]></category>
		<category><![CDATA[コンパイラ]]></category>
		<category><![CDATA[関数]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=3308</guid>
		<description><![CDATA[「お前もプログラマーならまともなエディタを使いたまえ」とは先輩の言葉です。 Emacs がまともかどうかはわかりませんが、すっかり手放せないツールです。
Emacs 23.2リリース、入力補完やクラスブラウザなどを備えた [...]]]></description>
			<content:encoded><![CDATA[<p>「お前もプログラマーならまともなエディタを使いたまえ」とは先輩の言葉です。 Emacs がまともかどうかはわかりませんが、すっかり手放せないツールです。</p>
<p><a href="http://sourceforge.jp/magazine/10/05/10/0748222" class="external">Emacs 23.2リリース、入力補完やクラスブラウザなどを備えたプログラミング支援ツール「CEDET」を標準搭載 &#8211; SourceForge.JP Magazine : オープンソースの話題満載</a></p>
<p><span id="more-3308"></span></p>
<p><a href="http://cedet.sourceforge.net/" class="external">CEDET</a> が標準搭載され、配置するだけで次の機能が使えるとのことです。</p>
<ul>
<li>Makefile作成ツール</li>
<li>コンパイラ実行スクリプト</li>
<li>入力補完/支援機能</li>
<li>ヘルプ/リファレンス参照機能</li>
<li>自動コード生成</li>
<li>UMLダイアグラム作成機能</li>
</ul>
<p>未確認で申し訳ないです。「こういう仕事は IDE でやればいいや」って感じでいつも進めてしまうんです。ただ、 UML ダイアグラム作成機能というのはちと気になります。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/3308/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>警告「引数は関数の本体部で 1 度も参照されません。」を消すための措置</title>
		<link>http://www.game-create.com/archives/1927</link>
		<comments>http://www.game-create.com/archives/1927#comments</comments>
		<pubDate>Wed, 08 Jul 2009 13:53:01 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[TIPS]]></category>
		<category><![CDATA[VC++ 2008 EE]]></category>
		<category><![CDATA[コンパイラ]]></category>
		<category><![CDATA[変数]]></category>
		<category><![CDATA[警告]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=1927</guid>
		<description><![CDATA[Visual C++ 標準のコンパイラ cl.exe で警告レベルを /W4 にしてコンパイルすると、一度も使われていない変数に対して警告が発せられますが、 argc や argv など、場合によっては使わない可能性があ [...]]]></description>
			<content:encoded><![CDATA[<p>Visual C++ 標準のコンパイラ cl.exe で警告レベルを /W4 にしてコンパイルすると、一度も使われていない変数に対して警告が発せられますが、 argc や argv など、場合によっては使わない可能性がある変数を警告から守る（？）方法を WEB で見つけました。</p>
<p><span id="more-1927"></span></p>
<p>方法は簡単、使わない変数を void でキャストするだけです。</p>
<div class="hl-surround" ><div class="hl-main"><pre><span class="hl-types">int </span><span class="hl-identifier">main</span><span class="hl-brackets">(</span><span class="hl-types">int </span><span class="hl-identifier">argc</span><span class="hl-code">, </span><span class="hl-types">char</span><span class="hl-code"> *</span><span class="hl-identifier">argv</span><span class="hl-brackets">[])
{
  </span><span class="hl-reserved">static_cast</span><span class="hl-code">&lt;</span><span class="hl-types">void</span><span class="hl-code">&gt;</span><span class="hl-brackets">(</span><span class="hl-identifier">argc</span><span class="hl-brackets">)</span><span class="hl-code">; </span><span class="hl-comment">// ←ここと…
  </span><span class="hl-reserved">static_cast</span><span class="hl-code">&lt;</span><span class="hl-types">void</span><span class="hl-code">&gt;</span><span class="hl-brackets">(</span><span class="hl-identifier">argv</span><span class="hl-brackets">)</span><span class="hl-code">; </span><span class="hl-comment">// ←ここ

  </span><span class="hl-reserved">return </span><span class="hl-number">0</span><span class="hl-code">;
</span><span class="hl-brackets">}</span></pre></div></div>
<p>ただ、基本的に警告に対しては真摯に向き合った方が良いと思います。変数を自分で用意しておいて使わないというのは、何か間違えているような気がします（ましてや１度も使ってないというのは凡ミスですよね）。</p>
<p>何かの情報を WEB で検索しているときに見つけたのですが、これ、どこかの書籍でも書いてあったかもしれません。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/1927/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>仕事で Flash のことを訊かれたので答えてみました</title>
		<link>http://www.game-create.com/archives/1835</link>
		<comments>http://www.game-create.com/archives/1835#comments</comments>
		<pubDate>Fri, 19 Jun 2009 09:25:34 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[オーサリングツール]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[make]]></category>
		<category><![CDATA[VC++ 2008 EE]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[アニメーション]]></category>
		<category><![CDATA[コンパイラ]]></category>
		<category><![CDATA[デバッガ]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=1835</guid>
		<description><![CDATA[同じ疑問をお持ちの方がいらっしゃいましたら参考にしてみて下さい。

Flash が無いと SWF は作れないの？
いいえ、 Flex SDK があれば無償で SWF を作ることができます。
Flash と Flex SD [...]]]></description>
			<content:encoded><![CDATA[<p>同じ疑問をお持ちの方がいらっしゃいましたら参考にしてみて下さい。</p>
<p><span id="more-1835"></span></p>
<h4>Flash が無いと SWF は作れないの？</h4>
<p>いいえ、 Flex SDK があれば無償で SWF を作ることができます。</p>
<h4>Flash と Flex SDK はどう違うの？</h4>
<p>Flash を Visual C++ のような IDE と考えると、 Flex SDK は cl.exe とか link.exe とか nmake.exe みたいなものです。ただし、 Flex SDK にて SWF を作るためには JRE （ Java のランタイム）が必要です。</p>
<h4>Flash を買う意味あるの？</h4>
<p>アニメーション要素のあるムービーを低コストで作りたい場合は大いにあります。 Flash があればモーションをマウスでつけることができますし、モーションの惰性も二次元のグラフで簡単に指定できます。描画ツールもありますので、単純な図形をマウスやペンタブレットで描くこともできます。</p>
<p>もし、 Flash を使わない場合は、座標や回転値などのモーションデータをオブジェクトと数値で指定するか、 XML で指定なければなりません。</p>
<h4>あなたはアニメーションを作れないのに、なぜ Flash を持ってるの？</h4>
<p>デバッガが便利なのと、 Creative Suite にバンドルされていたからです。仕事で作った SWF は Stage のタイムラインの１フレームに起動コードがあるだけで、あとは ActionScript で構築しました。ここだけ見ると無駄なんですが、それを無駄と思わせないのはデバッガの存在が大きいと思います。</p>
<h4>簡単に覚えられる？</h4>
<p>なんらかのプログラミング言語の経験がある方にとっては、携帯 Flash や昔の Flash に比べたら遙かに難度は低いと思います。 Flash は Macromedia 時代からそうだったのですが、マニュアルが非常に良くできていて、情報源に不足がありません（トピック毎にコピペで動くサンプルがあるのが嬉しいです）。ただ、全く初めての場合は、入門書に頼った方が良いと思います（少なくともタイムラインが問題なく使えるようになるまでは）。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/1835/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>コンパイラの警告レベルを最大にすると Visual C++ 提供のヘッダで警告に遭遇する件</title>
		<link>http://www.game-create.com/archives/1783</link>
		<comments>http://www.game-create.com/archives/1783#comments</comments>
		<pubDate>Thu, 04 Jun 2009 15:59:51 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[VC++ 2008 EE]]></category>
		<category><![CDATA[コンパイラ]]></category>
		<category><![CDATA[コンパイル]]></category>
		<category><![CDATA[警告]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=1783</guid>
		<description><![CDATA[やるなっつーことか。

レベル４（ /W4 ）なら大丈夫みたいです。警告クリーンを目指す場合はレベル４くらいなんかでいかがでしょうか。
他人が作った部分で警告が消せない場合は抑制する方法なんかも検討いただくと良いかもしれ [...]]]></description>
			<content:encoded><![CDATA[<p>やるなっつーことか。</p>
<p><span id="more-1783"></span></p>
<p>レベル４（ /W4 ）なら大丈夫みたいです。警告クリーンを目指す場合はレベル４くらいなんかでいかがでしょうか。</p>
<p>他人が作った部分で警告が消せない場合は<a href="http://www.game-create.com/archives/411">抑制する方法</a>なんかも検討いただくと良いかもしれません。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/1783/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>プロフェッショナル Windows ゲームプログラミング</title>
		<link>http://www.game-create.com/archives/1484</link>
		<comments>http://www.game-create.com/archives/1484#comments</comments>
		<pubDate>Sun, 05 Apr 2009 10:30:52 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[コンパイラ]]></category>
		<category><![CDATA[ハードウェア]]></category>
		<category><![CDATA[最適化]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=1484</guid>
		<description><![CDATA[前の職場に Windows ゲーム開発に従事されていた方がいらっしゃいまして、いろいろ興味深いお話を聞きました。

MS のコンパイラが吐くコードより Intel のコンパイラの吐くコードの方が品質が高い（当時はコストベ [...]]]></description>
			<content:encoded><![CDATA[<p>前の職場に Windows ゲーム開発に従事されていた方がいらっしゃいまして、いろいろ興味深いお話を聞きました。</p>
<p><span id="more-1484"></span></p>
<p>MS のコンパイラが吐くコードより Intel のコンパイラの吐くコードの方が品質が高い（当時はコストベースの最適化は Intel のコンパイラが一番性能良かったそうです）のでそっちを使っていたり、やはりハードウェアの環境依存の解決が大変だったり（対応していない命令に”対応している”と返す偽仕様もあったとか）、コンシューマゲーム機向けゲームの開発も大変ですが、こちらはこちらで独特のノウハウが必要ですね。</p>
<p>また、 Windows ではヒートエイジングをやらないそうです。理由は「その前に Windows が落ちるから」だそうです（当時は 9x 系しか無かった）。なんて情けない OS でしょうか…</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/1484/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ソースファイルをコンパイルだけしてリンクしない</title>
		<link>http://www.game-create.com/archives/1259</link>
		<comments>http://www.game-create.com/archives/1259#comments</comments>
		<pubDate>Tue, 27 Jan 2009 16:47:58 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[make]]></category>
		<category><![CDATA[オブジェクトファイル]]></category>
		<category><![CDATA[コンパイラ]]></category>
		<category><![CDATA[コンパイル]]></category>
		<category><![CDATA[ソースファイル]]></category>
		<category><![CDATA[リンク]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=1259</guid>
		<description><![CDATA[ソースファイルをコンパイルだけしてリンクしないためには cl.exe に /c オプションを渡します。

cl.exe を使う際、オプションを省略しまくると、可能な限りリンクまでして実行ファイルを作ってくれますが、これが [...]]]></description>
			<content:encoded><![CDATA[<p>ソースファイルをコンパイルだけしてリンクしないためには cl.exe に /c オプションを渡します。</p>
<p><span id="more-1259"></span></p>
<p>cl.exe を使う際、オプションを省略しまくると、可能な限りリンクまでして実行ファイルを作ってくれますが、これが不要な時は /c オプションを渡すとオブジェクトファイルを作って終了します。</p>
<div class="hl-surround" ><div class="hl-main"><pre>cl.exe /c source.cpp

# 実行すると source.obj ができます
# たとえ source.cpp の中に main() 関数があろうがリンクされません</pre></div></div>
<p>大きなプロジェクトを make などを使ってビルドする場合や、興味本位でオブジェクトファイルを解析したいときなど覚えておくと嬉しくなります。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/1259/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>プランベースの最適化とコストベースの最適化</title>
		<link>http://www.game-create.com/archives/628</link>
		<comments>http://www.game-create.com/archives/628#comments</comments>
		<pubDate>Fri, 22 Aug 2008 00:16:28 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[VC++ 2008 EE]]></category>
		<category><![CDATA[コンパイラ]]></category>
		<category><![CDATA[最適化]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=628</guid>
		<description><![CDATA[Visual C++ が無料で手に入る時代、お金を払って Visual C++ を使う意味があるのでしょうか？その判断材料になるのが最適化です。

最適化には２種類ありまして、ひとつがプランベースの最適化、もうひとつがコ [...]]]></description>
			<content:encoded><![CDATA[<p>Visual C++ が無料で手に入る時代、お金を払って Visual C++ を使う意味があるのでしょうか？その判断材料になるのが最適化です。</p>
<p><span id="more-628"></span></p>
<p>最適化には２種類ありまして、ひとつがプランベースの最適化、もうひとつがコストベースの最適化です。 Visual C++ の無料版に搭載されているのはプランベースの最適化のみで、有料版には両方の最適化が搭載されています。</p>
<p>では、プランベースとコストベースの違いはいったいどこなのでしょうか？</p>
<p>まず、プランベースというのは「プログラムのコードを基に最適化すること」です。たとえば「連続した１バイトの転送処理が４回続いているから１バイトを４つまとめて４バイトで転送しよう」とかです（ 32bit マシンなので４バイトの転送が一度にできるのです）。こういった処理はゲームなどでは非常に有効です。どんなに初心者の方が書いたコードが効率悪くても、コンパイルしたら速くなる可能性があるのです。これが無料で使えるのは大変ありがたいことですね。</p>
<p>一方のコストベースのというのは「実際に動かしてみた結果を基に最適化すること」です。プランベースと違って実際に動かすというコストはかかりますが、最適化されたプログラムはプランベースの最適化より速くなります。冷静に考えてみれば当然です、実績を基にボトルネックを見つけて解消しているわけですから、やっていることは人間であるプログラマと同じというわけです。実は、まだコストベースの最適化を見たことがありませんので、多少の誤解はあるかもしれませんが、おおざっぱに考えてこういうことです。これなら有料版にしか搭載されていないのもうなずけます。</p>
<p><del datetime="2008-08-28T09:10:33+00:00">というわけでお金に余裕ができましたら有料版の購入を検討してみてください。</del> Professional 以上でないと付いていないそうです。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/628/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>すでに都市伝説と化したコンパイラの最適化うんちく</title>
		<link>http://www.game-create.com/archives/625</link>
		<comments>http://www.game-create.com/archives/625#comments</comments>
		<pubDate>Wed, 20 Aug 2008 15:54:42 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[コンパイラ]]></category>
		<category><![CDATA[ネタ]]></category>
		<category><![CDATA[最適化]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=625</guid>
		<description><![CDATA[私のような老兵が今の若者に過去の苦難を語る機会など急速に減りつつある昨今、コンパイラの最適化についてまたひとつ通説が伝説と化しました。

おそらく MS-DOS 時代を駆け巡った方々にはおなじみであろう通説、それは「コン [...]]]></description>
			<content:encoded><![CDATA[<p>私のような老兵が今の若者に過去の苦難を語る機会など急速に減りつつある昨今、コンパイラの最適化についてまたひとつ通説が伝説と化しました。</p>
<p><span id="more-625"></span></p>
<p>おそらく MS-DOS 時代を駆け巡った方々にはおなじみであろう通説、それは「コンパイラは２重ループの最適化が苦手」というものです。読んで字のごとく、コンパイラは最適化オプションをつけても、ハイパフォーマンスな２重ループのコードを吐きだしてくれなかったのです。そんなわけで、２重ループの代表的な用途であるブロック転送などをアセンブラでガリガリやっていた時代があったのですが、先日、某天才プログラマーに言われてしまいました。</p>
<p><img src="http://www.game-create.com/wp-content/plugins/wp-tegaki/wp-tegaki-img.php?tegaki_id=625-0&amp;page=1" alt="コンパイラ？最適化？２重ループ？" width="381" height="36" /><br />
<img src="http://www.game-create.com/wp-content/plugins/wp-tegaki/wp-tegaki-img.php?tegaki_id=625-1&amp;page=1" alt="君はいつの話をしておるんだ…" width="325" height="35" /></p>
<p>聞く話によると最近のコンパイラは２重ループも速いそうです。知りませんでしたなぁ…。冷静に考えてみると Win32API でゲームが作れるくらい最近のマシンスペックとテクノロジーは進化しているわけですよね。最近、アセンブラ書いてないです。これは幸せなことなのかもしれません。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/625/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>古い Visual C++ のスコープに関するおもしろいバグ</title>
		<link>http://www.game-create.com/archives/559</link>
		<comments>http://www.game-create.com/archives/559#comments</comments>
		<pubDate>Thu, 07 Aug 2008 01:05:12 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[コンパイラ]]></category>
		<category><![CDATA[スコープ]]></category>
		<category><![CDATA[ネタ]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=559</guid>
		<description><![CDATA[昔の Visual C++ というか cl.exe におもしろいバグがあるそうです。

for (int i = 0; i &#60;10; i++);

printf(&#34;%d\n&#34;, i);
これ [...]]]></description>
			<content:encoded><![CDATA[<p>昔の Visual C++ というか cl.exe におもしろいバグがあるそうです。</p>
<p><span id="more-559"></span></p>
<div class="hl-surround" ><div class="hl-main"><pre><span class="hl-reserved">for </span><span class="hl-brackets">(</span><span class="hl-types">int </span><span class="hl-identifier">i</span><span class="hl-code"> = </span><span class="hl-number">0</span><span class="hl-code">; </span><span class="hl-identifier">i</span><span class="hl-code"> &lt;</span><span class="hl-number">10</span><span class="hl-code">; </span><span class="hl-identifier">i</span><span class="hl-code">++</span><span class="hl-brackets">)</span><span class="hl-default">;

</span><span class="hl-identifier">printf</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">%d</span><span class="hl-special">\</span><span class="hl-string">n</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">i</span><span class="hl-brackets">)</span><span class="hl-default">;</span></pre></div></div>
<p>これが動いてしまうそうです。ちゃんと 10 と表示されるとか。わざわざ for 文の中で変数を宣言する意味が無いですね。もしかしたら cl.exe ではブロックの先頭から末尾が新しいスコープになるように設計されているのかもしれません。なんというか機械的に、まぁ、機械であることには違いないんですけど。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/559/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>警告レベルがあわないヘッダのインクルードで警告を抑制する方法</title>
		<link>http://www.game-create.com/archives/411</link>
		<comments>http://www.game-create.com/archives/411#comments</comments>
		<pubDate>Tue, 01 Jul 2008 13:31:27 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[コンパイラ]]></category>
		<category><![CDATA[プラグマ]]></category>
		<category><![CDATA[ヘッダファイル]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=411</guid>
		<description><![CDATA[警告レベルを最大にしたいのに #include するヘッダで警告に遭遇してしまう場合に、そこだけ警告を抑制する方法です。また、ヘッダが勝手に警告を抑制している場合にも使えます。

// 警告設定をスタックに積む
#pr [...]]]></description>
			<content:encoded><![CDATA[<p>警告レベルを最大にしたいのに #include するヘッダで警告に遭遇してしまう場合に、そこだけ警告を抑制する方法です。また、ヘッダが勝手に警告を抑制している場合にも使えます。</p>
<p><span id="more-411"></span></p>
<div class="hl-surround" ><div class="hl-main"><pre><span class="hl-comment">// 警告設定をスタックに積む
</span><span class="hl-prepro">#pragma </span><span class="hl-identifier">warning</span><span class="hl-brackets">(</span><span class="hl-identifier">push</span><span class="hl-brackets">)</span><span class="hl-prepro">

</span><span class="hl-comment">// uncorporatable_header.h で次の警告を抑制する
</span><span class="hl-prepro">#pragma </span><span class="hl-identifier">warning</span><span class="hl-brackets">(</span><span class="hl-identifier">disable</span><span class="hl-code">: </span><span class="hl-number">4000</span><span class="hl-brackets">)</span><span class="hl-prepro">
#pragma </span><span class="hl-identifier">warning</span><span class="hl-brackets">(</span><span class="hl-identifier">disable</span><span class="hl-code">: </span><span class="hl-number">4001</span><span class="hl-brackets">)</span><span class="hl-prepro">

</span><span class="hl-comment">// このヘッダで 4000 と 4001 の警告が抑制される
</span><span class="hl-prepro">#include </span><span class="hl-quotes">&quot;</span><span class="hl-string">uncorporatable_header.h</span><span class="hl-quotes">&quot;</span><span class="hl-prepro">

</span><span class="hl-comment">// 警告設定を元に戻す
</span><span class="hl-prepro">#pragma </span><span class="hl-identifier">warning</span><span class="hl-brackets">(</span><span class="hl-identifier">pop</span><span class="hl-brackets">)</span></pre></div></div>
<p>#pragma pop と #pragma push は、内部でプラグマを変更しているヘッダを読み込む際に、後のコンパイルに影響を与えないようにする目的にも使えます。かなり便利です。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/411/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
