這是 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月28日 星期五
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 匯出。
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
ISR 與 SIGNAL 都是用來指定 interrupt service routine 的巨集,
它們的差別就是:沒有差別。
SIGNAL 是舊的寫法,也就是為了相容舊的程式碼而保留下來的,
在寫新的 code 時,請用 ISR
2008年3月4日 星期二
[note] Vista 開啟休眠功能
因為 Vista 預設的關機模式並沒有休眠,而是睡眠 (相當於 XP 中的待命),必需手動將它打開,以管理員身份打開命令提示字元,執行 powercfg -h on,在開始功能表裡就會多一個休眠了。
訂閱:
文章 (Atom)