2008年3月28日 星期五

[note] Qualified name 與 Dependent name

這是 C++ template 中對於名稱的兩個最主要的命名方式,

Qualified name:當一個名稱被以 :: 或 . 或 -> 給指明其作用域時,這個名稱稱為 qualified name (受飾名稱)

Dependent name: 當一名稱受控於某個 template parameter 時,這個名稱稱為 dependent name (受控名稱),例如 T 是個 template parameter 時,std::vector<T>::iterator 為一個 dependent name;而當 T 是個已知型別時(如 int),則 std::vector<T>::iterator 為一個 nondependent name。

參考自 C++ Templates 全覽 (侯捷譯)

2008年3月24日 星期一

C++ Templates 的源碼檔案組織方式

在傳統的 C/C++ 程式設計中,我們通常把型別及函式的宣告式放在表頭檔 ( *.h header files),定義式放在實作檔 (*.c *.cpp)中,但是這種運作方式在 C++ templates 中會讓聯結器不能正常工作,因為函式的定義與宣告被放置於兩個不同的檔案,使得該 template function 無法被俱現化,解決的方式大概可分成三個:

1. Inclusion Model:將函式的定義直接寫在 header file,這也是最佳的處理方法。

2. Explicit Instantiation:新增一檔案,加入明確俱現化 template 的敘述,並引入實作檔。

3. Separation Model:使用 export 關鍵定,將 template 匯出。

2008年3月14日 星期五

[Note] gcc 中 ISR 及 SIGNAL 的差別

筆記一下,

ISR 與 SIGNAL 都是用來指定 interrupt service routine 的巨集,

它們的差別就是:沒有差別。

SIGNAL 是舊的寫法,也就是為了相容舊的程式碼而保留下來的,

在寫新的 code 時,請用 ISR

2008年3月4日 星期二

[note] Vista 開啟休眠功能

因為 Vista 預設的關機模式並沒有休眠,而是睡眠 (相當於 XP 中的待命),必需手動將它打開,以管理員身份打開命令提示字元,執行 powercfg -h on,在開始功能表裡就會多一個休眠了。