__VA_ARGS__ 與 ## 小檔案

 

我大致整理出要點, 供急功近利的新手參考.

1. __VA_ARGS__ 顧名思義, 就是一個可變的參數.

例如: #define ABC(format,…)   printf(format, __VA_ARGS__);

注意最後這個分號.

2. 假如實際參數是 0 的話, 會發生下面的問題

 ABC(“%s") –> printf(“%s",);

為了除去這個逗號, 可以用 ## 來提示 compiler.

例如: #define ABC(format,…)   printf(format, ##__VA_ARGS__);

3. 由於 __VA_ARGS__ 有點礙眼, 所以它可以被抽象化成一個變數.

例如: #define ABC(format,…)   printf(format, ##arg);

4. 以上講的是 macro 的使用, 在 function 當中一樣可以用

例如: int function(char *argv, …)

這個可以用來處理 command line 參數的情況, 因為參數可多可少.

function 當中可以用 ##__VA_ARGS__ 來傳遞 … 所代表的值給其他 function.

或是透過 va_list, va_start, va_arg, va_end 這四個標準函式庫把 argv 裡面放的東西一一取出來. 用法參見:

http://www.cplusplus.com/reference/clibrary/cstdarg/va_start.html 有使用範例

http://ehome.hifly.to/showthread.php?s=&threadid=329 有原始 macro code, 也有範例, 呃…, 還有一連串的討論.

———————————————

關於如何巧妙運用 __VA_ARGS_, 在網路上的這篇文章, 有很好的介紹, 大家可以去看.

http://www.jeffhung.net/blog/articles/jeffhung/1012/ 

八卦之八卦

我有個 MSN 上的朋友, 從很早以前就把暱稱固定在 “地升謙" 了. 何謂也? 呃, 不好意思, 我沒有去問他, 問他就不八卦了, 我只是隨便猜一猜.

八卦可以衍生為 64 卦, 天澤火雷風水山地可以組合成天天、地地這樣的樣式. 不過其中只有地山謙, 地風升, 沒有地升謙這回事. 不過一個 “升", 一個 “謙", 我給它一個新的卦象叫 “陞遷"~~~也許是朋友想陞遷了. 這樣夠八卦了吧!

這六十四卦的卦象大概是長這樣:

天天

天風

天山

天地

風地

山地

火地

火天

大有

水水

水澤

水雷

水火

既濟

澤火

雷火

地火

明夷

地水

山山

山火

山天

大畜

山澤

火澤

天澤

風澤

中孚

風山

雷雷

雷地

雷水

雷風

地風

水風

澤風

大過

澤雷

風風

風天

小畜

風火

家人

風雷

天雷

無妄

火雷

噬嗑

山雷

山風

火火

火山

火風

火水

未濟

山水

風水

天水

天火

同人

地地

地雷

地澤

地天

雷天

大壯

澤天

水天

水地

澤澤

澤水

澤地

澤山

水山

地山

雷山

小過

雷澤

歸妹

 

這裡面還出過很多成語, 比方說否極泰來. 就是天地的, 倒轉之後就變成地天的.前面那掛是外掛, 表示外在、對外、外界的影響, 後面那一掛就是內掛, 表示內在、對內、內心. 所以地天表示由地而天, 由小而大, 並不是天地無用. 由剝而復也是其中產生的成語.

以前我也有一位長官讀過易經, 他說可以從其中領悟很多道理. 不過我最近看的一本書講到了另外一個真理, 那就是用片面的領悟去推廣到萬事萬物, 其實是殘缺不全的. 所以, 對於事物的感慨可以當作思考的引子, 但是不能因此而預做結論.

不能容於俗世, 算不上人才. 即使讀通了易經, 若不會做人, 不食人間煙火, 也只能當個講課大師、心靈導師、宗教領袖. 真正的人才, 是需要在俗世中發揮的.

—————————————

根據很有學問的朋友  補充: “三陽開泰也是出自易經, 還有, 金庸偷最多, 降龍18掌裡面 亢龍有悔,潛龍勿用 見龍在田,飛龍在天… 好多都是.

由剝而復, 三陽開泰的解釋:

http://web2.nmns.edu.tw/PubLib/NewsLetter/88/136/13.html

與 “龍" 有關的解釋, 九五之尊的出處:

http://www.chineseclassic.com/13jing/yi/ch01.htm

http://blog.roodo.com/cominion/archives/787412.html

降龍十八掌完整出處: (copy 自 wiki: )

  1. 亢龍有悔乾卦上九)
  2. 飛龍在天乾卦九五)
  3. 龍戰於野坤卦上六)
  4. 潛龍勿用乾卦初九)
  5. 利涉大川(大畜、同人、未濟等卦多次出現)
  6. 鴻漸於陸漸卦九三)
  7. 突如其來離卦九四)
  8. 震驚百里震卦彖辭)
  9. 或躍在淵乾卦九四)
  10. 神龍擺尾(原名履虎尾,履卦九四)
  11. 見龍在田乾卦九二)
  12. 雙龍取水
  13. 魚躍於淵
  14. 時乘六龍乾卦彖辭)
  15. 密雲不雨小畜卦辭)
  16. 損則有孚損卦彖辭)
  17. 履霜冰至坤卦初六)
  18. 羝羊觸藩大壯上六)

SVN 小筆記

SVN (Subversion) 是一個免費的版本管理系統, 雖然很浪費空間, 但是功能強大. 它的基本功能 check out、update、commit 大家應該都會吧! 我來講一下比較會讓人暈頭的 merge 和 switch.

Switch 相對簡單, 只要下 switch, PC 硬碟上的目錄就可以從 server 的 A 目錄改成對應 B 目錄. 這有甚麼用呢? 當我們改 code 改了半天,  可能既要 commit A 目錄, 又可以 commit 到 B 目錄. 如果一開始的 code 是從 server 的 A 目錄 check out 出來的, 那麼 commit 回 A 目錄當然不成問題. 可以要 commit B 目錄的話, 就沒那麼直覺了.

因為這個 PC 上的 A 目錄與子目錄裡面有很多 .svn 的隱藏檔 (每個目錄一個), 所以它硬是要效忠於 server 上的 A 目錄 (儘管名稱可以不同). 若是把 .svn 都砍掉, 倒是可以把它 copy 起來, 再蓋到 PC 上的目錄 B, 接著再 commit. 不過這樣做就太痤了. Switch 可以直接讓 .svn 的效忠對象改變, 這樣就省了很多了麻煩.

再說到 merge. 一般手工 merge code 當然是看看有甚麼 diff (difference). 但是 SVN 有現成的 merge 指令讓我們 merge A version 到 B version. 在此處有幾個東西要注意: (1) Merge from older version to newer version. 如果把順序弄反的話, 就會變得亂七八糟. (2) 可以在 PC 上的 A 目錄 merge 或是 B 目錄 merge. 選擇 PC 上的目錄決定了merge 的結果對應到 server 上的哪一個目錄, 它與 start URL 與 end URL 為何沒有關係.

此處的 merge 結果可能還需要手工修正, 但假如目錄 B 是從 frozen 的目錄 A branch 出來的, 那麼 A-B merge 的結果就等於目錄 B 蓋掉目錄 A. 此時拿 merge 的結果再 commit 成新版就好了, 也是相當方便!

認識 Sisvel 公司

這家公司是做甚麼的? 有甚麼事蹟呢?

Sisvel 是一家義大利公司, 全名是 Società Italiana per lo Sviluppo dell’Elettronica. 若是翻成英文, 應該是 Italian society for the Development of(?) Electronics.

這家公司具備了部分 WSS、DVB-T、MPEG audio 的技術, 其中比較著名的它在收取 MP3 授權費方面的動作. 又因為 Sisvel 代理了飛利浦、法國電信、松下電器(Matsushita)和JVC等公司在 MP3 的專利, 所以它在世界各國都有控告 MP3 大廠侵犯其專利, 並且尋求賠償的例子.

這些是網路上搜尋到的標題:

國產MP3遭追殺背后:Sisvel的野心和手段

Sisvel又在搞鬼了

在IFA搜查事件 Sisvel扮演的角色

至於 Sisvel 控告的對象, 主要是終端銷售的品牌 (brand owner), 而不是工廠 (代工廠, OEM). 雖然代工廠比較容易管制 IC 的數量, 但是這些代工廠本身也需要通過 Sisvel 的認證, Sisvel 才會相信這些代工廠給的數據.

畢竟, 品牌廠商有一部分的產品號稱是 (大陸) 內銷的. 這些內銷貨因為 MP3 並未取得大陸的專利, 所以也無須透過認證工廠生產. 若是偷偷內銷轉外銷, Sisvel 就吃虧了. 所以 Sisvel 的眼光注目在品牌廠商上, 的確是比較完備的.

那麼, Sisvel 所宣稱的專利, 就是整個 MPEG1/2-3 的 audio 專利嗎? 並不是的. MPEG audio 的專利至少有 3 大部分屬於不同的企業: Fraunhofer Society (就是出 MP3 pro 的那家)、飛利浦 (放棄小家電業了) 與貝爾實驗室 (這些專利目前屬於Alcatel-Lucent).

Fraunhofer 與 Thomson 合作.

飛利浦與 Sisvel 合作.

Alcatel 自己管理.

即使 Sisvel 宣稱只要付他們權利金,就不需要再付給其他廠商了,但這並不是事實.

關於諡號

今日加速看回到明朝當王爺“, 主角楊凌誤傳死訊之後, 明朝的大臣開始為他討論諡號, 最終決定叫做文成武德“. 雖然有點搞笑, 不過我也對諡號命名規則有了一點認識.

皇帝的諡號可多可少, 少到 1 2字、或 3 , 多到 21 23 .

早期君王的諡號, 如晉文公、楚莊王之類, 大家都還耳熟能詳. 到了武則天之後, 她就弄出了天皇大帝來追諡她的老公. 甚至是活著的時候, 就為自己加封尊號為開元聖文神武皇帝“. 以至於尊號影響到諡號的長度, 使得謚號的長度突破到 4 個字. 此外, 尊號 (徽號) 可以在國家慶典時逐漸加字變長.

明成祖誅了方孝儒的十族, 既然他殺起人來這麼猛, 官員也不敢在死後得罪他. 因此他的諡號很狗腿地漲到 17 個字的後天弘道高明肇運聖武神功純仁至孝文皇帝“, 而不是明宣宗之類的. 乾隆皇帝不想輸給古人, 所以他的諡號長達 23 個字, “法天隆運至誠先覺體元立極敷文奮武欽明孝慈神聖純皇帝“.

皇帝以外的諡號大致是: 親王 1, 郡王、大臣 2 .

大臣的兩個字當中, 第一個字用來分類, 比方說文官可以用" 字開頭, 表彰在文治方面的成就 (文謚), 武官可以用" 字開頭, 表彰他的武功 (武謚). 若是不特別分類, 可以使用" , 這就是所謂的通諡“.

因為諡號以短為美, 所以大臣只得一個, 就比 X" 了不起. 歷史上得到此榮譽的臣子, 只有王安石, 諡號“.

第二個字就有既定的排序法, 使人一聽就知道其功績的高低.

文官: 正忠恭成、端恪襄順

武官: 忠勇穆剛、德烈恭壯

比方說文官以文正" 為最高榮譽, 武官以武忠" 為最高榮譽. 前者像是曾國藩諡曾文正公“, 後者像是韓世忠諡韓武忠公“. 岳飛初期被諡為岳武穆公“, 後來升等到岳武忠公“, 但大家應該頂多只記得岳武穆“, 大概是因為各地廟宇已經蓋下去了.

至於岳飛的仇家秦檜, 最後諡繆丑“. 這是屬於下諡" 或是惡諡“.