const 屬性
const關鍵字會修改類型宣告的類型或函式參數的類型,以防止值不同。
const const-type identifier = const-expression ;
[ typedef [ , type-attribute-list ] ] const const-type declarator-list;
[ typedef [ , type-attribute-list ] ] pointer-type const declarator-list;
[ [ function-attr-list ] ] type-specifier [ ptr-decl ] function-name(
[ [ parameter-attribute-list ] ] ) const;
const-type [declarator], [ [ parameter-attribute-list ] ] pointer-type const [declarator], ...);
-
const-type
-
指定有效的 MIDL 整數、字元、字串或布林類型。 有效的 MIDL 類型包括small、short、long、char、charÂ*、wchar_t、wchar_t *、byte、byte *和voidÂ*。 整數和字元類型可以 帶正負號 或 不帶正負號。
-
identifier
-
指定有效的 MIDL 識別碼。 有效的 MIDL 識別碼包含最多 31 個英數位元和/或底線字元,且必須以字母或底線字元開頭。
-
const-expression
-
指定適用于指定型別的運算式、識別碼或數值或字元常數:整數常數常數的常數整數常值或常數整數運算式;布林值型別編譯時可計算的 布林 運算式; char 類型的單一字元常數;和 [string] 類型的字串常數。 void *類型只能初始化為Null。
-
type-attribute-list
-
指定套用至類型的一或多個屬性。
-
pointer-type
-
指定有效的 MIDL 指標類型。
-
宣告子和宣告子清單
-
指定標準 C 宣告子,例如識別碼、指標宣告子和陣列宣告子。 如需詳細資訊,請參閱 陣列和Sized-Pointer屬性、 陣列和 陣列和指標。 宣告子清單包含一或多個宣告子,並以逗號分隔。 函式宣告子中的參數名稱識別碼是選擇性的。
-
function-attr-list
-
指定套用至函式的零個或多個屬性。 有效的函式屬性為[callback], [local];指標屬性[ref]、[unique]或[ptr];和使用量屬性[string]、[ignore]和[coNtext_handle]。
-
type-specifier
-
ptr-decl
-
指定零個或多個指標宣告子。 指標宣告子與 C 中使用的指標宣告子相同。它會從 * 指示項、 遠方修飾詞和限定詞 const建構。
-
function-name
-
指定遠端程式的名稱。
-
parameter-attribute-list
-
指定零個或多個方向屬性、欄位屬性、使用方式屬性,以及適用于指定參數類型的指標屬性。 以逗號分隔多個屬性。
MIDL 可讓您在 IDL 檔案的介面主體中宣告常數整數、字元、字串和布林值類型。 Const 類型宣告會在產生的標頭檔中重現為 #define 指示詞。
DCE IDL 編譯器不支援常數運算式。 因此,當您使用 MIDL 編譯器 /osf 參數時,無法使用此功能。
先前定義的常數可以做為後續常數的指派值。 常數整數運算式的值會根據 C 轉換規則自動轉換成個別的整數類型。
字元常數的值必須是單引號 ASCII 字元。 當字元常數是單引號字元本身 (') 時,反斜線字元 (\) 必須位於單引號字元前面,如 \' 所示。
字元字串常數的值必須是雙引號字串。 在字串中,反斜線 () \ 字元必須在常值雙引號字元前面 ( 「) ,如\」。 在字串中,反斜線字元 () \ 代表逸出字元。 字串常數最多可以包含 255 個字元。
Null 值是 void 類型常數的唯一有效值 *。 會忽略與 const 宣告相關聯的任何屬性。
MIDL 編譯器不會檢查 const 初始化中的範圍錯誤。 例如,當您指定 「const short x = 0xFFFFFFFF;」時,MIDL 編譯器不會報告錯誤,而且初始化運算式會在產生的標頭檔中重現。
const void * p1 = NULL;
const char my_char1 = 'a';
const char my_char2 = my_char1;
const wchar_t my_wchar3 = L'a';
const wchar_t * pszNote = L"Note";
const unsigned short int x = 123;
typedef [string] const char *LPCSTR;
HRESULT GetName([out] wchar_t * const pszName );