C++ 固有
名前の衝突の問題を回避します。
構文
#import type-library rename( "OldName" , "NewName" )
パラメーター
OldName
タイプ ライブラリ内の古い名前。
NewName
古い名前の代わりに使用する名前。
解説
rename 属性を指定すると、コンパイラは、結果のヘッダー ファイル内で、OldName の type-library 内でのすべての出現箇所を、ユーザーが指定した NewName に置き換えます。
rename 属性は、タイプ ライブラリ内の名前がシステム ヘッダー ファイル内のマクロ定義と一致する場合に使用できます。 この状況が解決されない場合、コンパイラはコンパイラ エラー C2059 やコンパイラ エラー C2061 など、さまざまな構文エラーを発行する可能性があります。
Note
置換は、結果のヘッダー ファイルで使用される名前ではなく、タイプ ライブラリで使用される名前に対して実行されます。
たとえば MyParent
という名前のプロパティがタイプ ライブラリにあり、マクロ GetMyParent
がヘッダー ファイルに定義され、#import
の前で使用されているとします。 GetMyParent
は、エラー処理の get
プロパティのラッパー関数の既定の名前であるため、名前の競合が発生します。 問題を回避するには、#import
ステートメント内で次の属性を使用します。
#import MyTypeLib.tlb rename("MyParent","MyParentX")
これにより、タイプ ライブラリ内の MyParent
の名前が変更されます。 GetMyParent
ラッパーの名前を変更しようとすると、失敗します:
#import MyTypeLib.tlb rename("GetMyParent","GetMyParentX")
これは、名前 GetMyParent
が、結果のタイプ ライブラリ ヘッダー ファイルにのみ出現するためです。
END C++ 固有