_Export 関数指定子 (C++ のみ)

関数をエクスポートする (他のモジュールに対して使用可能にする) こと を宣言するには、関数名と一緒に _Export キーワードを使用してください。 この関数は、_Export キーワードを使用する変換単位と同じ 変換単位内に定義する必要があります。 例えば、次のように指定します。
int _Export anthony(float);
上記のステートメントでは、変換単位内で関数 anthony を定義すると、その関数はエクスポートされます。

_Export キーワードは、 関数名の直前に指定する必要があります。 宣言内で _Export キーワードが繰り返されていると、z/OS® XL C++ は、ユーザーが INFO(GEN) オプションを指定した時、警告を出します。

_Export キーワードがクラスに適用された場合は、z/OS XL C++ コンパイ ラーは、staticpublicprivate、 または protected に関係なく、そのクラスのすべてのメンバーを自動的 にエクスポートします。 しかし、このキーワードを個々のクラス・メンバーに適用したい場合、参照できる 各メンバーに適用しなければなりません。 次のクラス定義は、このことを示しています。
class A {
  public:
    int iii() {
      printf("Hi from A::iii()¥n");
      aaa();
      printf("Call to A::ccc() returned %c¥n", ccc());
      return 88;
    }
    static void _Export sss();
  protected:
    void _Export aaa();
  private:
    char _Export ccc();
};

class _Export B {
  public:
    int iii() {
      printf("Hi from B::iii()¥n");
      aaa();
      printf("Call to B::ccc() returned %c¥n", ccc());
      return 99;
    }
    static void sss();
  protected:
    void _Export aaa();
  private:
    char _Export ccc();
};
次の例では、X::Print()X::GetNext() は、両方ともエクスポートされます。
           class _Export X {
             public:
                  ...
                  void static Print();
                  int GetNext();
                  ...
           };

           void X:: static Print() {
                  ...
           }
           int X::GetNext() {
                  ...
           }

前述の例では、クラスの特定のメンバー、またはそのクラス全体の いずれかのエクスポートについて説明しました。_Export キーワードは、 ネストされたクラスの宣言内にあるクラス・タグにも適用されることに注意してください。