共用方式為


三個指標類型

MIDL 支援三種類型的指標,以容納各種應用程式。 這三個不同的層級稱為 reference、unique 和 full 指標,而且分別由屬性 [ref][unique][ptr]表示。 這些屬性所描述的指標類別互斥。 指標屬性可以套用至類型定義、函數傳回型別、函數參數、結構或等位的成員,或陣列元素中的指標。

內嵌指標是結構或等位成員的指標。 它們也可以是陣列的元素。 在 [in] 方向中,會假設內嵌 [ref] 指標指向有效的儲存體,且不得為 Null。 這種情況以遞迴方式適用于指向的任何 [ref] 指標。 在 [in] 方向中,內嵌 [unique] 和完整指標 (指標與 [ptr] 屬性) 可能不是 Null。

函式宣告語法中放置於參數的任何指標屬性只會影響該參數最右邊的指標宣告子。 若要影響其他指標宣告子,必須使用中繼具名類型。

傳回指標的函式可以有指標屬性做為函式屬性。 [unique][ptr]屬性必須套用至函式傳回型別。 屬於指標的成員宣告可以將指標屬性指定為欄位屬性。 指標屬性也可以套用為 typedef 建構中的類型屬性。

如果未將指標屬性指定為欄位或類型屬性,則會根據未設定指標宣告的規則套用指標屬性,如下所示。

在 DCE 相容性模式中,指標屬性會在定義 IDL 檔案中決定。 如果定義介面中指定的 [pointer_default**]**屬性,則會使用該屬性。 如果沒有 [pointer_default] 屬性存在,則所有未設定的指標都是完整指標。

在 Microsoft 延伸模組模式中,指標屬性可以藉由匯入 IDL 檔案來決定,並以下列順序套用:

  1. 在使用網站套用的明確指標屬性。
  2. 當未設定的指標是最上層指標參數時,則 為 [ref] 屬性。
  3. 定義介面中指定的 [pointer_default] 屬性。
  4. 基底介面中指定的 [pointer_default] 屬性。
  5. [unique]屬性。

[pointer_default]介面屬性會指定當該宣告未套用明確指標屬性時,要套用至類型、參數或傳回型別宣告器的預設指標屬性。 [pointer_default]介面屬性不適用於參數未設定的最上層指標,其假設為[ref]