型別庫(三) 型別庫和元素的屬性

2021-06-15 21:29:52 字數 1433 閱讀 6599

當我們合併在乙個型別庫中的這些資料結構和元素,把他們封裝在乙個特殊介面的背後,我們能夠以乙個物件的方式查閱其中的庫和每個元素.為了做到這樣,我們把問題提公升為,這些物件應該有什麼樣的屬性.

乙個型別庫或乙個元素的屬性被稱作屬性s.

屬性描述

name

描述型別庫或元素的名字,不能含有空格和標點,例如koalatypelibray,koalaobject,或者ikoala.每個元素都有乙個名字.

guid(或者uuid)

庫或元素的程式設計標識.庫的guid與其他的clsid或iid不同.乙個模組不能有guid.對於乙個typedef它是可選的.其他的元素都要有它.

version

庫或元素的主要和次要版本.

docstring

一小塊文字,描述庫或元素的目的.

helpfilename

乙個幫助檔案的名字(沒有路徑),它包含更多的關於庫的資訊.乙個庫只能有乙個幫助檔案,所以這個屬性僅用於乙個庫,不用與單個元素.

helpcontext

在helpfilename中的上下文標識,它指出庫或元素在資訊在**才能找到

lcid

乙個地區識別符號,它指出型別庫和元素使用的所有的字串的單一的國家語言.乙個型別庫是為乙個指定國家語言編寫的,除了個別的函式引數能夠接受乙個地區用於自動適應語言功能,可能提供翻譯或自動轉換.

flags

指出庫或元素額外部分的位.儘管有許多元素標誌,乙個庫只有幾種可能:根本沒有標誌,隱藏(不可通過使用者介面瀏覽),或者約束(為了安全的約束)

表3-2:型別庫和它的元素的屬性

你可以發現,helpstring,helpfilename和helpcontext屬性攜帶與乙個型別庫相關的幫助資訊,但不是所有的型別資訊.想法是這樣的,使用者可以通過一些瀏覽工具快速檢視任何元素的目的,這是通過helpstring屬性實現的.如果helpfilename屬性是有效的,瀏覽工具也可提供乙個幫助按鈕,我們按下它,會載入winhelp與helpcontext的值顯示庫或元素更多的資訊.

lcid屬性值得討論.通常只有在庫中可以發現這個屬性,但是它也可以出現在函式的引數中.正如你期待的,乙個型別庫,就如同乙個使用者參考手冊一樣,會包含明確的書寫語言,如英語,俄語或阿拉伯語.這個語言將用於庫中的一切事物,除了特定的函式引數.目的是為了支援多語言,通過提供多樣的區域性化型別庫,它們中的每乙個可以共存在一台計算機上而且可以分享一樣的guid.註冊實體區分它們的地方化.

lcid屬性是個lcid型別的值,對於地區識別符號,最初由unicode委員會建立,這樣的識別符號形成了地區化,全球化,國際化的基礎.不只用於型別標識,還用於其他語言敏感的win32 api.作為支援unicode的部分,win32 api引入lcid作為國際語言支援的一部分,而且ole使用作業系統的這一部分處理它自己語言關係.

簡單地說,乙個lcid,或者乙個地區,是為了方便處理,只不過是乙個32位值,低16位包含"語言識別符號",或langid:

型別庫(二) 型別庫的元素

如果你繞著乙個現實世界的圖書館走一走,你通常會看見許多各式各樣形狀大小很多不同方面的書籍 那些就是你期盼的幾乎無限的人類創造的知識 幸運的是,型別庫稍微簡單 只反映有限的元件資訊 任何在型別庫中的元素屬於下表中五類元素之一 元素目的 coclass 描述乙個特定物件實現的介面或排程介面 用clsid...

Haskell 筆記 三 型別

haskell有強大的型別系統 每個表示式在編譯時都會明確型別,因此可以有更多的資訊來檢查錯誤。支援型別推導。prelude t true true bool prelude t a a char prelude t hi hi char prelude t true,a true,a bool,c...

編譯原理(三)型別檢查

型別系統 型別檢查 多態函式 過載 上面不能在不該出現continue的地方出現continue。c語言 問題 如果a是乙個陣列名,那麼表示式a和 a的值都是陣列a第乙個元素的位址,它們的使用是否有區別?用四個c檔案的編譯報錯或執行結果來提示 上面報錯,返回的a不能作為二位陣列的指標 返回a的指標時...