_Export 関数指定子 (C++ のみ)
関数をエクスポートする (他のモジュールに対して使用可能にする) こと
を宣言するには、関数名と一緒に _Export キーワードを使用してください。
この関数は、_Export キーワードを使用する変換単位と同じ
変換単位内に定義する必要があります。
例えば、次のように指定します。
int _Export anthony(float);
上記のステートメントでは、変換単位内で関数 anthony を定義すると、その関数はエクスポートされます。_Export キーワードは、 関数名の直前に指定する必要があります。 宣言内で _Export キーワードが繰り返されていると、z/OS® XL C++ は、ユーザーが INFO(GEN) オプションを指定した時、警告を出します。
_Export キーワードがクラスに適用された場合は、z/OS XL C++ コンパイ
ラーは、static、public、private、
または 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 キーワードは、 ネストされたクラスの宣言内にあるクラス・タグにも適用されることに注意してください。