<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: #ifndef BOOL</title>
	<atom:link href="http://www.jeffhung.net/blog/articles/jeffhung/1143/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jeffhung.net/blog/articles/jeffhung/1143/</link>
	<description>(My smile insists of having nose. :-)</description>
	<lastBuildDate>Thu, 03 Nov 2011 00:43:25 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2-alpha</generator>
	<item>
		<title>By: Frank</title>
		<link>http://www.jeffhung.net/blog/articles/jeffhung/1143/comment-page-1/#comment-171628</link>
		<dc:creator>Frank</dc:creator>
		<pubDate>Thu, 16 Sep 2010 07:19:52 +0000</pubDate>
		<guid isPermaLink="false">http://www.jeffhung.net/blog/?p=1143#comment-171628</guid>
		<description>確實如此 錯得一塌糊塗
有些compiler 有支援...我認為稍微可恨而已

真真可恨的是...想要把別人 typedef 的消除,而又碰上不支援的compiler &gt;.&lt;~ 那才是天大的災難 悲情 末日</description>
		<content:encoded><![CDATA[<p>確實如此 錯得一塌糊塗<br />
有些compiler 有支援...我認為稍微可恨而已</p>
<p>真真可恨的是...想要把別人 typedef 的消除,而又碰上不支援的compiler &gt;.&lt;~ 那才是天大的災難 悲情 末日</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: jeffhung</title>
		<link>http://www.jeffhung.net/blog/articles/jeffhung/1143/comment-page-1/#comment-125162</link>
		<dc:creator>jeffhung</dc:creator>
		<pubDate>Fri, 12 Dec 2008 22:46:50 +0000</pubDate>
		<guid isPermaLink="false">http://www.jeffhung.net/blog/?p=1143#comment-125162</guid>
		<description>&lt;p&gt;Seamus,&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;用 #define 事情會更慘吧？例如《&lt;a href=&quot;http://www.jeffhung.net/blog/articles/jeffhung/599/&quot; rel=&quot;nofollow&quot;&gt;#define N 3&lt;/a&gt;》下面討論裡，我&lt;a href=&quot;http://www.jeffhung.net/blog/articles/jeffhung/599/#comment-8247&quot; rel=&quot;nofollow&quot;&gt;提到&lt;/a&gt;的：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;因為這樣一來，你就不能 #include &lt;windows.h&gt;，在 &lt;windows.h&gt; 裡面有個 structure 有個欄位，就叫做 N。&lt;/p&gt;
&lt;/blockquote&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;如果只有一個 module，就可以這麼搞，但問題是通常會不只一個 module 組成系統，且來源、作者皆不同。&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;</description>
		<content:encoded><![CDATA[<p>Seamus,</p>
<ol>
<li>
<p>用 #define 事情會更慘吧？例如《<a href="http://www.jeffhung.net/blog/articles/jeffhung/599/" rel="nofollow">#define N 3</a>》下面討論裡，我<a href="http://www.jeffhung.net/blog/articles/jeffhung/599/#comment-8247" rel="nofollow">提到</a>的：</p>
<blockquote>
<p>因為這樣一來，你就不能 #include &lt;windows.h&gt;，在 &lt;windows.h&gt; 裡面有個 structure 有個欄位，就叫做 N。</p>
</blockquote>
</li>
<li>
<p>如果只有一個 module，就可以這麼搞，但問題是通常會不只一個 module 組成系統，且來源、作者皆不同。</p>
</li>
</ol>
]]></content:encoded>
	</item>
	<item>
		<title>By: Seamus</title>
		<link>http://www.jeffhung.net/blog/articles/jeffhung/1143/comment-page-1/#comment-125069</link>
		<dc:creator>Seamus</dc:creator>
		<pubDate>Fri, 12 Dec 2008 02:31:18 +0000</pubDate>
		<guid isPermaLink="false">http://www.jeffhung.net/blog/?p=1143#comment-125069</guid>
		<description>按照合理的前置處理的角度，應該沒有辦法得知是否進行過 typedef (因為還沒有實際進行編譯 typedef)。

但有些編譯器確實可以...我還真有遇到過，例如 C51 即是。而且剛學時，還傻傻的相信這樣寫是對的。

個人認為要做到以下兩個習慣：
1、BOOL 字眼是很容易衝突的；除非很有把握能避免名稱污染，否則不要濫用 typedef。以下用 #define 替代 typedef，將上述原程式碼改為：

#ifndef BOOL
  #define BOOL int
#endif

這裡所作的事情是一樣的，但機制不同；雖缺點是這樣一來，也亦無法防制別的地方有宣告 typedef int BOOL;，但至少程式碼有效。

2、將所有與編譯環境平台相關的類型定義放在一個專門的標頭檔裡，並且根據編譯需要條件式地包含引用。</description>
		<content:encoded><![CDATA[<p>按照合理的前置處理的角度，應該沒有辦法得知是否進行過 typedef (因為還沒有實際進行編譯 typedef)。</p>
<p>但有些編譯器確實可以...我還真有遇到過，例如 C51 即是。而且剛學時，還傻傻的相信這樣寫是對的。</p>
<p>個人認為要做到以下兩個習慣：<br />
1、BOOL 字眼是很容易衝突的；除非很有把握能避免名稱污染，否則不要濫用 typedef。以下用 #define 替代 typedef，將上述原程式碼改為：</p>
<p>#ifndef BOOL<br />
  #define BOOL int<br />
#endif</p>
<p>這裡所作的事情是一樣的，但機制不同；雖缺點是這樣一來，也亦無法防制別的地方有宣告 typedef int BOOL;，但至少程式碼有效。</p>
<p>2、將所有與編譯環境平台相關的類型定義放在一個專門的標頭檔裡，並且根據編譯需要條件式地包含引用。</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: jeffhung</title>
		<link>http://www.jeffhung.net/blog/articles/jeffhung/1143/comment-page-1/#comment-118265</link>
		<dc:creator>jeffhung</dc:creator>
		<pubDate>Thu, 23 Oct 2008 10:03:25 +0000</pubDate>
		<guid isPermaLink="false">http://www.jeffhung.net/blog/?p=1143#comment-118265</guid>
		<description>啊？哪一個部份是 C Preprocessor 必須支援的語法？</description>
		<content:encoded><![CDATA[<p>啊？哪一個部份是 C Preprocessor 必須支援的語法？</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: AntOnly</title>
		<link>http://www.jeffhung.net/blog/articles/jeffhung/1143/comment-page-1/#comment-118251</link>
		<dc:creator>AntOnly</dc:creator>
		<pubDate>Thu, 23 Oct 2008 07:36:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.jeffhung.net/blog/?p=1143#comment-118251</guid>
		<description>這是 C Preprocessor 必須支援的語法，而且以後用 BOOL 的地方會當成 int (假設沒有 #define BOOL ...)，所以 compiler 沒有投訴。
To Arlo
&gt;&gt;原本想要做的事
#ifndef BOOL
#define BOOL int
#endif

or

typedef int BOOL;</description>
		<content:encoded><![CDATA[<p>這是 C Preprocessor 必須支援的語法，而且以後用 BOOL 的地方會當成 int (假設沒有 #define BOOL ...)，所以 compiler 沒有投訴。<br />
To Arlo<br />
&gt;&gt;原本想要做的事<br />
#ifndef BOOL<br />
#define BOOL int<br />
#endif</p>
<p>or</p>
<p>typedef int BOOL;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Arlo</title>
		<link>http://www.jeffhung.net/blog/articles/jeffhung/1143/comment-page-1/#comment-106441</link>
		<dc:creator>Arlo</dc:creator>
		<pubDate>Mon, 28 Jul 2008 18:11:59 +0000</pubDate>
		<guid isPermaLink="false">http://www.jeffhung.net/blog/?p=1143#comment-106441</guid>
		<description>我看了這三行好久, 一直搞不懂這三行要幹嘛..
最後不知為何雄雄懂了這三行原本想要做的事.
這...這也太..</description>
		<content:encoded><![CDATA[<p>我看了這三行好久, 一直搞不懂這三行要幹嘛..<br />
最後不知為何雄雄懂了這三行原本想要做的事.<br />
這...這也太..</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: av</title>
		<link>http://www.jeffhung.net/blog/articles/jeffhung/1143/comment-page-1/#comment-105109</link>
		<dc:creator>av</dc:creator>
		<pubDate>Mon, 21 Jul 2008 14:51:46 +0000</pubDate>
		<guid isPermaLink="false">http://www.jeffhung.net/blog/?p=1143#comment-105109</guid>
		<description>To 爆爆王：
這是個蠢到讓許多人無法一眼看出的錯誤，撇開巨集的問題，其中最好笑的就是把 #define 與 typedef 混為一談。typedef 後，下次 #if 或 #ifndef 仍然是沒有 define BOOL.</description>
		<content:encoded><![CDATA[<p>To 爆爆王：<br />
這是個蠢到讓許多人無法一眼看出的錯誤，撇開巨集的問題，其中最好笑的就是把 #define 與 typedef 混為一談。typedef 後，下次 #if 或 #ifndef 仍然是沒有 define BOOL.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: 爆爆王</title>
		<link>http://www.jeffhung.net/blog/articles/jeffhung/1143/comment-page-1/#comment-105051</link>
		<dc:creator>爆爆王</dc:creator>
		<pubDate>Mon, 21 Jul 2008 08:09:23 +0000</pubDate>
		<guid isPermaLink="false">http://www.jeffhung.net/blog/?p=1143#comment-105051</guid>
		<description>不懂，頂一下。</description>
		<content:encoded><![CDATA[<p>不懂，頂一下。</p>
]]></content:encoded>
	</item>
</channel>
</rss>

