1、 愛的最佳習慣是會說話
2、 現在握手,以手交心
3、 但凡言愛,須要輕聲
4、 真愛之路從來不平坦
5、 愛不表現則不存在
6、 亂石砸不滅愛火
7、 愛情舒心,猶如雨後朝陽
8、 找來的愛甜,不找自到的愛更甜
9、 如有真愛,當真心言說
10、可疑星星為火,可疑太陽西移,可疑真理不存,惟我愛不可疑
11、爾之面熟,不可謂之真俗
12、愛如溫泉,常新不止
時間會刺破青春表面的彩飾,會在美人的額上掘深溝淺槽;會吃掉稀世之珍!天生麗質,什麼都逃不過他那橫掃的鐮刀。 —— 莎士比亞
多聽,少說,接受每一個人的責難,但是保留你的最後裁決。 —— 莎士比亞
不良的習慣會隨時阻礙你走向成名、獲利和享樂的路上去。 —— 莎士比亞
青春是一個短暫的美夢,當你醒來時,它早已消失無蹤。 ----莎士比亞
母羊要是聽不見她自己小羊的啼聲,她決不會回答一頭小牛的叫喊。 ---莎士比亞
醜惡的海怪也比不上忘恩的兒女那樣可怕。 ---莎士比亞
道德和才藝是遠勝於富貴的資產,墮落的子孫可以把貴顯的門第敗壞,把巨富的財產蕩毀,可是道德和才藝,卻可以使一個凡人成為不配的神明。 ---莎士比亞
習氣那個怪物,雖然是魔鬼,會吞掉一切的羞恥心,也會做天使,把日積月累的美德善行熏陶成自然而然而令人安之若素的家常便飯。 ---莎士比亞
他們的莊嚴高貴。 ---莎士比亞
人世間的煊赫光榮,往往產生在罪惡之中,為了身外的浮名,犧牲自己的良心。 ---莎士比亞
質樸卻比巧妙的言辭更能打動我的心。 -----莎士比亞
多聽,少說,接受每一個人的責難,但是保留你的最後裁決。 ----莎士比亞
當我們膽敢作惡,來滿足卑下的希冀,我們就迷失了本性,不再是我們自己。 ----莎士比亞
一個驕傲的人,結果總是在驕傲裡毀滅了自己。
---莎士比亞
愛情不是花蔭下的甜言,不是桃花源中的蜜語,不是輕綿的眼淚,更不是死硬的強迫,愛情是建立在共同語言的基礎上的。 ----莎士比亞
忠誠的愛情充溢在我的心裡,我無法估計自己享有的財富。 ---莎士比亞
人的一生是短的,但如果卑劣地過這短的一生,就太長了。 ----莎士比亞
黑夜無論怎樣悠長,白晝總會到來。 ---莎士比亞
對眾人一視同仁,對少數人推心置腹,對任何人不要虧負。 ------莎士比亞
書籍是全世界的營養品。 ----莎士比亞
在命運的顛沛中,最可以看出人們的氣節。
----莎士比亞
愛和炭相同。燒起來,得沒法叫它冷卻。 ----莎士比亞
苦盡甘來。 ---莎士比亞
生命短促,只有美德能將它留傳到遼遠的後世。
---莎士比亞
真正的愛情是不能用言語表達的,行為才是忠心的最好說明 ---莎士比亞
愛比殺人重罪更難隱藏;愛情的黑夜有中午的陽光
---莎士比亞
不太熱烈的愛情才會維持久遠 ----莎士比亞
愛情裡面要是攙雜了和它本身無關的算計,那就不是真的愛情 ---莎士比亞
愛情不過是一種瘋 ----莎士比亞
當我們還買不起幸福的時候,我們絕不應該走得離櫥窗太近,盯著幸福出神。 ---莎士比亞
不要給百合花鍍金,畫蛇添足。 ---莎士比亞
美德是勇敢的,為善永遠無所畏懼。 ---莎士比亞
女人是用耳朵戀愛的,而男人如果會產生愛情的話,卻是用眼睛來戀愛。 ---莎士比亞
因為她生得美麗,所以被男人追求;因為她是女人,所以被男人俘獲。 --莎士比亞
聰明人變成了痴愚,是一條最容易上鉤的游魚;因為他憑恃才高學廣,看不見自己的狂妄。愚人的蠢事算不得稀奇,聰明人的蠢事才叫人笑痛肚皮;因為他用全副的本領,證明他自己愚笨。 ---莎士比亞
我沒有路,所以不需要眼睛;當我能夠看見的時候,我也會失足顛仆,我們往往因為有所自恃而失之於大意,反不如缺陷卻能對我們有益。 ---莎士比亞
懦夫在未死以前,就已經死了好多次;勇士一生只死一次,在一切怪事中,人們的貪生怕死就是一件最奇怪的事情。 ---莎士比亞
外觀往往和事物的本身完全不符,世人都容易為表面的裝飾所欺騙。
沒有比較,就顯不出長處;沒有欣賞的人,烏鴉的歌聲也就和雲雀一樣。要是夜鶯在白天雜在聒噪裡歌唱,人家絕不以為它比鷦鷯唱得更美。多少事情因為逢到有利的環境,才能達到盡善的境界,博得一聲恰當的讚賞。
----莎士比亞
黑暗無論怎樣悠長,白晝總會到來。 世界上還沒有一個方法,可以從一個人的臉上探察他的居心。
---莎士比亞
要是你做了獅子,狐狸會來欺騙你:
要是你做了羔羊,狐狸會來吃了你;
要是你做了狐狸,萬一騙子向你告發,獅子會對你起疑心;
要是你做了騙子,你的愚蠢將使你受苦,而且你也不免做豺狼的一頓早餐…… ---莎士比亞
魔鬼為了陷害我們起見,往往故意向我們說真話,在小事情上取得我們的信任,然後我們在重要的關頭便會墮入他的圈套。 ---莎士比亞
沒有什麼事是好的或壞的,但思想卻使其中有所不同。 ---莎士比亞
如果做好心理準備,一切準備都已經完成。 ---莎士比亞
你還能說『苦啊,最苦沒有了』你的苦,還不曾苦到底呢。 ---莎士比亞
天啊,男人不變心,他就是十全十美了。 ---莎士比亞
莎士比亞說:分手後,不可以做朋友,因為彼此傷害過。也不可以做敵人,因為彼此相愛過。
戀愛過的人,都覺得要不傷害多,要不愛的成分多。沒有兩個戀愛過的人還能作朋友。就相當於你丟了的歲月永遠也找不回一樣,愛情就是一種歲月 。把握好每一個進行時。別老想過去時。可以 設計一下將來時。
時間會刺破青春表面的彩飾,會在美人的額上掘深溝淺槽;會吃掉稀世之珍!天生麗質,什麼都逃不過他那橫掃的鐮刀。 —— 莎士比亞
多聽,少說,接受每一個人的責難,但是保留你的最後裁決。 —— 莎士比亞
不良的習慣會隨時阻礙你走向成名、獲利和享樂的路上去。 —— 莎士比亞
青春是一個短暫的美夢,當你醒來時,它早已消失無蹤。 ----莎士比亞
母羊要是聽不見她自己小羊的啼聲,她決不會回答一頭小牛的叫喊。 ---莎士比亞
1,愛情是嘆息吹起的一陣煙,戀人眼中有它淨化了的火星;戀人的眼淚是它激起的波濤,它有是最智慧的瘋狂,哽喉的苦味,沁舌的蜜糖
2,愛情不是花陰下的甜言,不是桃花源中的蜜語,不是輕綿的眼淚
更不是死硬的強迫,愛情是建立在共同上的基礎上的。
3,莎士比亞曾說過;TO BE OR NOT TO BE that is a question
4,Shakes beare 說;命運掌握在自己手裡!如果『受制於人』那麼錯不在命運『而在與我們自己』!
5,愛,和炭相同,燒起來,得想辦法叫它冷卻。
讓它任意著,那就要把一顆心燒焦。
6,要和一個男人相處的快樂,你應該多多瞭解他而不必太愛他,
要和一個女人相處的快樂,你應該多愛她,卻別想要瞭解她。
7,因為她生的美麗,所以被男人追求;因為她是女人,所以被男人俘獲。
8,我承認天底下再沒有比愛情的懲罰更痛苦的,
也沒有比服侍它更快樂的事了。
9,今天我要收回對你的全部的愛,因為我要慷慨地再給你一次。
忠誠的愛情充溢在我的心裡,我無法估計自己享有的財富。
10,如果女性因為感情而嫉妒起來那是很可怕的。
11,一個驕傲的人,結果總是在驕傲裡毀滅了自己。
12,草率的婚姻少美滿。
13,愛是一種甜蜜的痛苦,真誠的愛情永不是一條平坦的道路的。
14,我想愛情這東西只有自己體會才有所成功才!
兩個人誰也不瞭解對方才能有更美滿的婚姻!只有慢慢體會和發現才能過一生!!!
15,愛情從一誕生起,直到今天我們也沒有搞清楚愛一個人需要理由嗎?不需要嗎?需要嗎?不需要嗎?。。。。。。
倘若沒有理智,感情就會把我們弄得精疲力盡,正是為了制止感情的荒唐,才需要理智。
莎士比亞說:沒有身體的摩擦哪有愛情的火花!
真正的愛情是不能用言語表達的,行為才是忠心的最好說明
2010年11月25日 星期四
2010年11月18日 星期四
有關測焦 移焦 與 DIY調焦相關文章
APS-C片幅的機身...本身片幅小
所以每個對焦點的AF對焦感應器...相對的面積也比較小
所以APS-C機身有個無解的對焦問題
即使很準的機身與鏡頭
當用廣角焦段拍攝時...大約是50mm以下
近距離拍攝..對焦都很準
導致投射在很小的對焦改應器上面..更難分辨對焦
產生對焦精準度下滑的問題....常常都會對到後面的牆壁去
原文: http://www.ldsclub.net/forum/viewthread.php?tid=27845&highlight=
所以每個對焦點的AF對焦感應器...相對的面積也比較小
所以APS-C機身有個無解的對焦問題
即使很準的機身與鏡頭
當用廣角焦段拍攝時...大約是50mm以下
近距離拍攝..對焦都很準
當距離拉遠到... 1.5~2公尺以上時
因為廣角 + 對焦距離拉遠 = 對焦物體變得很小導致投射在很小的對焦改應器上面..更難分辨對焦
產生對焦精準度下滑的問題....常常都會對到後面的牆壁去
原文: http://www.ldsclub.net/forum/viewthread.php?tid=27845&highlight=
2010年11月15日 星期一
他馬的!趕羚羊!
他馬的!趕羚羊!LP! 國民黨盡出「羶」字經
2007年 10月 04日 12:03 ╱ 壹蘋果網絡
「羶」字經還真「煽」
高 雄市議會國民黨團在愛河邊高掛挺馬廣告「他,馬的」就是愛台灣,引起民進黨高雄市議員與高雄市民眾認為相當不雅,國民黨文宣遭批,沒水準!低俗!為了 「他,馬的」這個文宣,國民黨甚至還表示,心中只要沒邪念,所看的就沒有邪念,心中都是髒話的,看到的自然是髒話!其實在之前,國民黨就已經推出許多這種 引人爭議的文宣。
趕羚羊污辱母親
為了反制親綠的地下電台,國民黨在南部架設所謂的「趕羚羊之聲」,以嘲諷民進黨執政當局,不過後 來經過南部鄉親人士的抗議,認為「趕羚羊」這三個字相當不雅,民進黨婦女部也認為「趕羚羊」這三字,根本就是污辱「台灣母親」,經過國民黨文宣部研議後, 再將「趕羚羊」之聲改成為「LP」之聲,國民黨文宣部還表示,國民黨的LP,並非有些人常掛在嘴邊的「LP」。
「LP」蛋糕伺候婦女
為 了「趕羚羊」這三個字,民進黨還率領婦女們到國民黨部抗議,要求國民黨總統參選人馬英九為「趕羚羊」向全台灣母親道歉!為了民進黨婦女部的踢館,國民黨文 傳會甚至還特別訂製「LP」蛋糕,在綠營娘子軍抗議當天,擺出所謂「LP」蛋糕來伺候這些娘子軍,但事後國民黨黨工出面送了一本小王子《Little Prince》(LP),才平和收場。
2007年 10月 04日 12:03 ╱ 壹蘋果網絡
「羶」字經還真「煽」
高 雄市議會國民黨團在愛河邊高掛挺馬廣告「他,馬的」就是愛台灣,引起民進黨高雄市議員與高雄市民眾認為相當不雅,國民黨文宣遭批,沒水準!低俗!為了 「他,馬的」這個文宣,國民黨甚至還表示,心中只要沒邪念,所看的就沒有邪念,心中都是髒話的,看到的自然是髒話!其實在之前,國民黨就已經推出許多這種 引人爭議的文宣。
趕羚羊污辱母親
為了反制親綠的地下電台,國民黨在南部架設所謂的「趕羚羊之聲」,以嘲諷民進黨執政當局,不過後 來經過南部鄉親人士的抗議,認為「趕羚羊」這三個字相當不雅,民進黨婦女部也認為「趕羚羊」這三字,根本就是污辱「台灣母親」,經過國民黨文宣部研議後, 再將「趕羚羊」之聲改成為「LP」之聲,國民黨文宣部還表示,國民黨的LP,並非有些人常掛在嘴邊的「LP」。
「LP」蛋糕伺候婦女
為 了「趕羚羊」這三個字,民進黨還率領婦女們到國民黨部抗議,要求國民黨總統參選人馬英九為「趕羚羊」向全台灣母親道歉!為了民進黨婦女部的踢館,國民黨文 傳會甚至還特別訂製「LP」蛋糕,在綠營娘子軍抗議當天,擺出所謂「LP」蛋糕來伺候這些娘子軍,但事後國民黨黨工出面送了一本小王子《Little Prince》(LP),才平和收場。
人像拍攝, 測光
AV模式
1.決定好要拍攝的光圈。
2.將相機中央點移到要拍攝的物體上。
3.半按快門測光,就會得到曝光值;這時候半按快門不放,重新構圖。
(如果對焦點不在同一個z plane,需要重新對焦,則建議用曝光鎖)
4.構完圖就可以全按快們拍下去。
M模式
1.決定好要拍攝的光圈。
2.將相機中央點移到要拍攝的物體上。
3.根據曝光尺調整想要的曝光值,通常也都是調到中間(除非刻意要曝光過度或是不足)。
4.從新構圖,構完圖就直接按快門拍攝。
至於測光模式,在依實際的場景,切換權衡式測光、局部測光、重點測光、中央偏重平均測光。
一般權衡式測光就足以應付大部分場景,遇到反差過大場景可以考慮用點測光,拍攝夜景部份可以考慮針對光源用局部測光.............這些測光模式多拍幾次,大概就可以體會出他的差別囉。
http://forum.canonfans.biz/forum.php?mod=viewthread&tid=33588&extra=page%3D1
用M模式測光後~~再對焦、構圖~~~
比方說以點測光~~大光圈設定1.4~~~中心點測MD臉的亮部(基本上拍MM就是要臉曝光正常),如所得正確曝光快門為1/400~~~就以此數據拍攝~~~
這時再重新構圖時,此時中心點因為偏離MD臉的亮部,快門即因此增加或減少,不用去在意~~因為臉部的正確曝光值是固定的 (F1.4 1/400S) 當夠好圖~~對好焦~~~喀喳~~~~美女照即完成正確曝光、對焦及構圖~~~
不要太拘限於9個對焦點或一定要大光圈,有時縮光圈是必要的(可參考觀 景窗預覽功能!!)
有時手動對焦是必要的(構圖時MD的眼睛總不可能剛好在9個點上吧!)
大光圈人像拍攝基本法則
http://forum.canonfans.biz/forum.php?mod=viewthread&tid=19540&fromuid=37114
1.決定好要拍攝的光圈。
2.將相機中央點移到要拍攝的物體上。
3.半按快門測光,就會得到曝光值;這時候半按快門不放,重新構圖。
(如果對焦點不在同一個z plane,需要重新對焦,則建議用曝光鎖)
4.構完圖就可以全按快們拍下去。
M模式
1.決定好要拍攝的光圈。
2.將相機中央點移到要拍攝的物體上。
3.根據曝光尺調整想要的曝光值,通常也都是調到中間(除非刻意要曝光過度或是不足)。
4.從新構圖,構完圖就直接按快門拍攝。
至於測光模式,在依實際的場景,切換權衡式測光、局部測光、重點測光、中央偏重平均測光。
一般權衡式測光就足以應付大部分場景,遇到反差過大場景可以考慮用點測光,拍攝夜景部份可以考慮針對光源用局部測光.............這些測光模式多拍幾次,大概就可以體會出他的差別囉。
http://forum.canonfans.biz/forum.php?mod=viewthread&tid=33588&extra=page%3D1
用M模式測光後~~再對焦、構圖~~~
比方說以點測光~~大光圈設定1.4~~~中心點測MD臉的亮部(基本上拍MM就是要臉曝光正常),如所得正確曝光快門為1/400~~~就以此數據拍攝~~~
這時再重新構圖時,此時中心點因為偏離MD臉的亮部,快門即因此增加或減少,不用去在意~~因為臉部的正確曝光值是固定的 (F1.4 1/400S) 當夠好圖~~對好焦~~~喀喳~~~~美女照即完成正確曝光、對焦及構圖~~~
不要太拘限於9個對焦點或一定要大光圈,有時縮光圈是必要的(可參考觀 景窗預覽功能!!)
有時手動對焦是必要的(構圖時MD的眼睛總不可能剛好在9個點上吧!)
大光圈人像拍攝基本法則
http://forum.canonfans.biz/forum.php?mod=viewthread&tid=19540&fromuid=37114
2010年11月14日 星期日
為什麼不能「幹」、不能「卵葩」?/馬非白
撲浪上流行把「幹」字以注音寫成「ㄍㄢ四聲」來代替,其中所代表的現象除了網路文化之外,應該還有心靈禁錮的問題,值得討論。
中國黨殖民統治集團洗腦成功,他們貶低台語,你們也跟著認為台語罵人是下流,連個幹都要用注音的;他們可以說他媽的,台灣人為什麼不能罵幹?
他們說「扶卵葩」沒水準,你們就用英文諧音代表。如果陰莖、睪丸、陰囊是醫學名詞,為什麼台語的「卵葩」就不是醫學名詞,就是髒話?為什麼就要不好意思用台語說?眾多台灣人顯然需要進一步改造。
「卵葩」不是髒話,「幹」也不是髒話。中國黨殖民統治集團利用貶低文化語言的手法,遂行其殖民統治的目的。台灣人在這種文化語言束縛的箝制下,全都成了順民,這種文化語言的歧視甚至升高為無可違背的道德束縛,因而人人都變得卑下不知自己的尊嚴何在。
台灣人始終不了解這個深層的心靈禁錮,因此,奮鬥了幾十年還在原地繞圈子。
原文出處 http://www.news100.tw/modules/news/article.php?storyid=644
中國黨殖民統治集團洗腦成功,他們貶低台語,你們也跟著認為台語罵人是下流,連個幹都要用注音的;他們可以說他媽的,台灣人為什麼不能罵幹?
他們說「扶卵葩」沒水準,你們就用英文諧音代表。如果陰莖、睪丸、陰囊是醫學名詞,為什麼台語的「卵葩」就不是醫學名詞,就是髒話?為什麼就要不好意思用台語說?眾多台灣人顯然需要進一步改造。
「卵葩」不是髒話,「幹」也不是髒話。中國黨殖民統治集團利用貶低文化語言的手法,遂行其殖民統治的目的。台灣人在這種文化語言束縛的箝制下,全都成了順民,這種文化語言的歧視甚至升高為無可違背的道德束縛,因而人人都變得卑下不知自己的尊嚴何在。
台灣人始終不了解這個深層的心靈禁錮,因此,奮鬥了幾十年還在原地繞圈子。
原文出處 http://www.news100.tw/modules/news/article.php?storyid=644
2010年11月13日 星期六
超短焦投影機/60公分可投百吋畫面 可隔空書寫
超短焦投影機/60公分可投百吋畫面 可隔空書寫
更新日期:
2010/11/10 04:11
為搶攻教育市場,明碁公司特別研發出PointDraw技術,在電腦執行「Q Draw」軟體後,所連接的投影畫面中會有暗藏的編碼,讓互動筆的鏡頭感應出筆頭所指的位置,投影的畫面搖身變成電子白板,互動筆可以隔空書寫、塗鴉、換顏色。
優點是不用事先以互動筆定位螢幕的大小,即可開始教學,且上課的小朋友,只要拿到互動筆,即可隔空書寫老師要求的答案。
明 碁也研發出網路投影機技術,透過「Q Presenter」軟體,設定好帳號密碼,遠端教室的投影機即可連線到辦公室的電腦,老師不用抱著電腦在校園裡奔波;利用短焦投影的特性,投影機固定在 講台上方,不但不會擋到同學視線,老師眼睛也不會被投影機的強光射成「青冥俠」,設計相當貼心。
2010年11月11日 星期四
typedef 知多少?
《教學》typedef 知多少?
很多寫 C/C++ 的人都把 typedef 當成#define 來使用。
誠然,像這樣的定義
typedef unsigned short WORD;
就相當於
#define WORD unsigned short
但就本義來說,#define 是字串的取代,例如
#define WORD Hello!
編譯器不會有任何的抗議就通過的,在程式任何使用到 WORD 的地方
編譯器會忠實的用 Hello! 取代 WORD
由於取代的字串可不限於一行且可代入參數,所以#define 可用於 Macro 的定義如
#define max(a,b) (((a) > (b)) ? (a) : (b))
回過頭來說typedef主題,從本義來說typedef是 C/C++ 型態的別名。
所以若你想把
#define WORD Hello!
套在 typedef 的身上:
typedef Hello! WORD;
那麼編譯器會給你一個難堪錯誤訊息!因為 Hello! 不是一個合法的
型態,你不能為它取型態別名。
typedef看來不怎麼有用是吧!?非也,由於所謂 C/C++ 的型態是很廣義的,使用typedef
可以使程式看起來簡潔易懂且不容易出錯。下面是幾個typedef的應用例子:
簡單型態的別名
typedef unsigned char BYTE;//定義無號單字節的型態
typedef unsigned short WORD;//定義無號雙字節的型態
typedef unsigned long DWORD;//定義無號四字節的型態
//嗯!這三行沒什麼大不了,用#define也可以做
結構型態的別名
typedef struct StructTag{
int mA;
int mB;
}STRUCTTAG, *PSTRUCTTAG;
當要建立這個結構的物件時,就可以用別名 STRUCTTAG 和 PSTRUCTTAG,例如
STRUCTTAG StructObj;
PSTRUCTTAG pStructObj;
就相當於
struct StructTag StructObj;
struct StructTag *pStructObj;
函式型態的別名
如果你有一個 library 提供了字串轉整數的函式
int HexToInt(char *str);//十六進位字串轉整數
int DecToInt(char *str);//十進位字串轉整數
當你的程式要使用這些函式時,就必需include這些函式的定義,但用typedef會
更簡潔:
typedef int ToInt(char *str);
//上面這行定義了一個需傳入字串(char *)且返回整數(int)的函式型態別名
//叫 ToInt
ToInt HexToInt,DecToInt;//宣告HexToInt,DecToInt這兩個函式
現在你的程式可以呼叫HexToInt(...),DecToInt(...)了。
在Windows,通常是應用程式呼叫API來工作的,但由於某種需求,Windows API
會反過來呼叫應用程式的函式,這種函式稱之為 callback function。
callback function 對API來說只有該傳入那些參數和返回值型態,沒有函式名稱而用函式
指標來呼叫(事實上Windows也不可能用程式的函式名稱來呼叫)。這時使用函式型態的別名
來宣告函式指標就特別好用了。
舉個例子吧!建立一個新的行程(Thread)的函式:
CWinThread* AfxBeginThread( AFX_THREADPROC pfnThreadProc,
LPVOID pParam, int nPriority = THREAD_PRIORITY_NORMAL, UINT
nStackSize = 0, DWORD dwCreateFlags = 0,
LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL );
其中AFX_THREADPROC就是一個函式型態的別名
它的定義是
typedef UINT (AFX_CDECL *AFX_THREADPROC)(LPVOID);
//AFX_THREADPROC 是一個傳入一個指標參數返回UINT型態值的函式
//指標的名稱(AFX_CDEL是標明函式呼叫為 __cdecl(C style calling convention))
用這個宣告,不論API或應用程式本身都很方便,如應用程式可以這樣來
開啟行程:
CWinThread* pMyThread=AfxBeginThread(
(AFX_THREADPROC)MyThreadFunc,............
是不是很簡潔明瞭?嗯...MyThreadFunc算不算 callback function
有點疑義,但做為 typedef 的使用例子應沒問題的
原文引用:http://ehome.hifly.to/showthread.php?postid=332
很多寫 C/C++ 的人都把 typedef 當成#define 來使用。
誠然,像這樣的定義
typedef unsigned short WORD;
就相當於
#define WORD unsigned short
但就本義來說,#define 是字串的取代,例如
#define WORD Hello!
編譯器不會有任何的抗議就通過的,在程式任何使用到 WORD 的地方
編譯器會忠實的用 Hello! 取代 WORD
由於取代的字串可不限於一行且可代入參數,所以#define 可用於 Macro 的定義如
#define max(a,b) (((a) > (b)) ? (a) : (b))
回過頭來說typedef主題,從本義來說typedef是 C/C++ 型態的別名。
所以若你想把
#define WORD Hello!
套在 typedef 的身上:
typedef Hello! WORD;
那麼編譯器會給你一個難堪錯誤訊息!因為 Hello! 不是一個合法的
型態,你不能為它取型態別名。
typedef看來不怎麼有用是吧!?非也,由於所謂 C/C++ 的型態是很廣義的,使用typedef
可以使程式看起來簡潔易懂且不容易出錯。下面是幾個typedef的應用例子:
簡單型態的別名
typedef unsigned char BYTE;//定義無號單字節的型態
typedef unsigned short WORD;//定義無號雙字節的型態
typedef unsigned long DWORD;//定義無號四字節的型態
//嗯!這三行沒什麼大不了,用#define也可以做
結構型態的別名
typedef struct StructTag{
int mA;
int mB;
}STRUCTTAG, *PSTRUCTTAG;
當要建立這個結構的物件時,就可以用別名 STRUCTTAG 和 PSTRUCTTAG,例如
STRUCTTAG StructObj;
PSTRUCTTAG pStructObj;
就相當於
struct StructTag StructObj;
struct StructTag *pStructObj;
函式型態的別名
如果你有一個 library 提供了字串轉整數的函式
int HexToInt(char *str);//十六進位字串轉整數
int DecToInt(char *str);//十進位字串轉整數
當你的程式要使用這些函式時,就必需include這些函式的定義,但用typedef會
更簡潔:
typedef int ToInt(char *str);
//上面這行定義了一個需傳入字串(char *)且返回整數(int)的函式型態別名
//叫 ToInt
ToInt HexToInt,DecToInt;//宣告HexToInt,DecToInt這兩個函式
現在你的程式可以呼叫HexToInt(...),DecToInt(...)了。
在Windows,通常是應用程式呼叫API來工作的,但由於某種需求,Windows API
會反過來呼叫應用程式的函式,這種函式稱之為 callback function。
callback function 對API來說只有該傳入那些參數和返回值型態,沒有函式名稱而用函式
指標來呼叫(事實上Windows也不可能用程式的函式名稱來呼叫)。這時使用函式型態的別名
來宣告函式指標就特別好用了。
舉個例子吧!建立一個新的行程(Thread)的函式:
CWinThread* AfxBeginThread( AFX_THREADPROC pfnThreadProc,
LPVOID pParam, int nPriority = THREAD_PRIORITY_NORMAL, UINT
nStackSize = 0, DWORD dwCreateFlags = 0,
LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL );
其中AFX_THREADPROC就是一個函式型態的別名
它的定義是
typedef UINT (AFX_CDECL *AFX_THREADPROC)(LPVOID);
//AFX_THREADPROC 是一個傳入一個指標參數返回UINT型態值的函式
//指標的名稱(AFX_CDEL是標明函式呼叫為 __cdecl(C style calling convention))
用這個宣告,不論API或應用程式本身都很方便,如應用程式可以這樣來
開啟行程:
CWinThread* pMyThread=AfxBeginThread(
(AFX_THREADPROC)MyThreadFunc,............
是不是很簡潔明瞭?嗯...MyThreadFunc算不算 callback function
原文引用:http://ehome.hifly.to/showthread.php?postid=332
訂閱:
文章 (Atom)