共用方式為


三個指標類型

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

內嵌指標是結構或等位成員的指標。 它們也可以是陣列的元素。 在 [] 方向 [] 中,假設內嵌 [ref] 指標指向有效的記憶體,且不得為 null。 這種情況遞歸適用於任何 [ref] 指標所指向的指標。 在 [in] 方向中,內嵌 [唯一] 和完整指標(具有 [ptr] 屬性的指標)可能或可能不是 null。

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

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

當未將指標屬性指定為字段或類型屬性時,指標屬性會根據未指定指標宣告的規則套用,如下所示。

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

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

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

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