次の方法で共有


インポート属性の名前の変更

C++ 固有

名前の衝突の問題を回避します。

構文

#import type-library rename( "OldName" , "NewName" )

パラメーター

OldName
タイプ ライブラリ内の古い名前。

NewName
古い名前の代わりに使用する名前。

解説

rename 属性を指定すると、コンパイラは、結果のヘッダー ファイル内で、OldNametype-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++ 固有

関連項目

#import 属性
#import ディレクティブ