make_public pragma

ネイティブ型はパブリック アセンブリのアクセシビリティが必要であることを示します。

構文

#pragma make_public(type)

パラメーター

type
パブリック アセンブリのアクセシビリティを設定する型の名前。

解説

make_public は、参照するネイティブ型が、変更できないヘッダー ファイルにある場合に便利です。 パブリック関数のシグニチャでパブリック アセンブリ可視性を持つ型としてネイティブ型を使用する場合は、ネイティブ型にパブリック アセンブリ アクセシビリティもある必要があります。そうでない場合、コンパイラは警告を発行します。

make_public はグローバル スコープで指定する必要があります。 これは、ソース コード ファイルの末尾までを通じて宣言されているポイントからのみ有効です。

ネイティブ型は、暗黙的または明示的にプライベートにすることができます。 詳細については、「型の可視性」を参照してください。

次のサンプルは、2 つのネイティブ構造体の定義を含むヘッダー ファイルの内容です。

// make_public_pragma.h
struct Native_Struct_1 { int i; };
struct Native_Struct_2 { int i; };

次のコードサンプルでは、ヘッダー ファイルを使用します。 make_public を使用してネイティブの構造がパブリックとして明示的にマークされない限り、ユーザーがパブリック関数とパブリック マネージド型を使用しようとすると、コンパイラが警告を生成することを示します。

// make_public_pragma.cpp
// compile with: /c /clr /W1
#pragma warning (default : 4692)
#include "make_public_pragma.h"
#pragma make_public(Native_Struct_1)

public ref struct A {
   void Test(Native_Struct_1 u) {u.i = 0;}   // OK
   void Test(Native_Struct_2 u) {u.i = 0;}   // C4692
};

関連項目

pragma ディレクティブと __pragma および _Pragma キーワード