表 1 は、フィーチャー・テスト・マクロと標準との関連を要約したものです。「はい」は、フィーチャー・テスト・マクロが、標準に関連したシンボルを可視にすることを示します。
POSIX 標準に適用されないフィーチャー・テスト・マクロは、この表に は記載されていません。
フィーチャー・テスト・マクロ | POSIX.1 | POSIX.1a | POSIX.2 | POSIX.4a | XPG4.2 | XPG4.2 Ext | SUSv3 |
---|---|---|---|---|---|---|---|
_ALL_SOURCE | はい | はい | はい | はい | はい | はい | |
_ALL_SOURCE_NO_THREADS | はい | はい | はい | はい | はい | ||
_OE_SOCKETS | はい | はい | |||||
_OPEN_DEFAULT | はい | はい | はい | ||||
_OPEN_SOURCE 1 | はい | はい | はい | はい | |||
_OPEN_SOURCE 2 | はい | はい | はい | はい | はい | はい | |
_OPEN_SOURCE 3 | はい | はい | はい | はい | はい | はい | |
_OPEN_SYS | はい | はい | はい | はい | |||
_OPEN_SYS_IPC_EXTENSIONS | はい | はい | はい | ||||
_OPEN_SYS_PTY_EXTENSIONS | はい | はい | はい | はい | |||
_OPEN_SYS_SOCK_EXT | はい | はい | はい | はい | |||
_OPEN_THREADS | はい | はい | はい | ||||
_POSIX1_SOURCE 1 | はい | ||||||
_POSIX1_SOURCE 2 | はい | はい | |||||
_POSIX_C_SOURCE 1 | はい | ||||||
_POSIX_C_SOURCE 2 | はい | はい | |||||
_POSIX_C_SOURCE 200112L | はい | はい | はい | はい | |||
_POSIX_SOURCE | はい | ||||||
_XOPEN_SOURCE | はい | はい | はい | ||||
_XOPEN_SOURCE_EXTENDED 1 | はい | はい | はい | はい | |||
_XOPEN_SOURCE 500 | はい | はい | はい | はい | |||
_XOPEN_SOURCE 600 | はい | はい | はい | はい | はい | はい |
以下のフィーチャー・テスト・マクロがサポートされます。
このフィーチャー・テスト・マクロは以下のネーム・スペースを公開します。 POSIX.1、POSIX.1a、POSIX.2、POSIX.4a draft 6、XPG4、および XPG4.2。 同様に、Single UNIX Specification、バージョン 2 から引き継がれた z/OS® UNIX への追加。
さらに、_ALL_SOURCE を定義すると、ANSI、POSIX、または XPG4 では許可されていないが、C 言語アプリケーションを z/OS UNIX System サービスに移植するための支援機能として提供されている、多くのシンボルを可視にします。以下のフィーチャー・テスト・マクロにより可視にされる拡張機能は、_ALL_SOURCE によって暗黙的に定義されます。
_OPEN_THREADS がアプリケーションに明示的に定義されていない場合、_ALL_SOURCE は_OPEN_THREADS 1 を定義します。ただし、以下のいずれかが提供される場合を除きます。
_ALL_SOURCE は、Single UNIX Specification、バージョン 3 で最初に導入された、マクロ定義 _XOPEN_SOURCE 600 または _POSIX_C_SOURCE 200112L にある機能を公開しませんが、_OPEN_THREADS を 2 または 3 に定義することによって可視になったインターフェースは許容します。
ネーム・スペースを固定させるために、POSIX、XOPEN、または MVS™ にかかわらず、将来の拡張では _ALL_SOURCE の定義を拡張しません。シンボルをこのネーム・スペースに追加するためには、将来の機能拡張では、新しい、明示的フィーチャー・テスト・マクロが必要です。
このフィーチャー・テスト・マクロは、スレッド化サービス(_OPEN_THREADS) を公開しないことを除いて、_ALL_SOURCE と同じ機能を提供します。
1999 年に、IBM® Java グループのサポートで、C/C++ ランタイム・ライブラリーが IEEE754 浮動小数点演算サポートを提供しました。 Java™ 言語の 数学ライブラリーにはビット単位という要件がありました。つまり、すべてのプラットフォームが、Sun Microsystems の fdlibm (Freely Distributed LIBM) ライブラリーと 同じ結果を生成する必要がありました。そのため、Sun Microsystems の fdlibm コードは、IEEE754 浮動小数点演算サポートを提供するために、C/C++ ランタイム・ライブラリーに移植されました。C/C++ ランタイム・ライブラリーの 1999 年リリースの IEEE754 浮動小数点数学サポートに続き、IBM の Java グループは独自の IEEE754 浮動小数点数演算のサポートを提供し、このサポートで C/C++ ランタイム・ライブラリーを使用することはなくなりました。
z/OS V1R9 以降、オリジナルの fdlibm 関数のサブセットは、パフォーマンスと正確性が向上するように設計された新しいバージョンと置き換えられます。これらの関数の 新しいバージョンは、既存のエントリー・ポイントで置き換えられます。しかし、IBM では、マイグレーションを支援するために、オリジナル・ バージョンの fdlibm 用の新しいエントリー・ポイントを提供しています。特に処置を講じないアプリケーションは、 更新済みの関数を自動的に使用します。オリジナルの関数にアクセスする 2 つの方法があります。
このフィーチャー・テスト・マクロは、以下の C/C++ 関数の環境を提供します。
上記のいずれも、アプリケーションが、コンパイル単位で呼び出された浮動小数点数学関数に関して、いわゆる「変数」モードで実行されることになります。環境変数の詳細については、「z/OS XL C/C++ プログラミング・ガイド」を参照してください。
2 番目の方法は、ここに記述されているフィーチャー・テスト・マクロを使用する方法で、それは <math.h> を組み込んで _FP_MODE_VARIABLE フィーチャー・テスト・マクロを定義していないアプリケーションが使用できます。
acos(), acosh(), asin(), asinh(), atan(), atanh(), atan2(),
cbrt(), cos(), cosh(), erf(), erfc(), exp(), expm1(), gamma(),
hypot(), lgamma(), log(), log1p(), log10(), pow(), rint(), sin(),
sinh(), tan(), tanh()
オリジナルの fdlibm バージョンにアクセスするためには、アプリケーションを再コンパイルおよび再リンクする必要があります。
このフィーチャー・テスト・マクロは、C99 をサポートするように設計されたコンパイラーを必要とするインターフェースを除く、ISO/IEC 9899:1999 に関連したインターフェースすべてを使用可能にします。また、このフィーチャー・テスト・マクロは、通常 _MSE_PROTOS フィーチャー・テスト・マクロによって公開されるネーム・スペースも公開します (_NOISOC99_SOURCE が定義されていない限り)。_ISOC99_SOURCE フィーチャー・テスト・マクロは、C99 をサポートするように設計されたコンパイラーを使用する場合には必要ありません。
_LARGE_FILES フィーチャー・テスト・マクロは、特定の関数が、2 GB のサイズより大きい MVS データ・セットおよび z/OS UNIX ファイル、ならびに 4 GB のサイズより大きい VSAM 拡張アドレッシング機能のデータ・セットを操作できるようにします。このフィーチャー・テスト・マクロを選択する場合、このマクロをコンパイラー・オプション LANGLVL(LONGLONG) と一緒に使用して、long long データ型をアクティブにする必要があります。
creat(), fcntl(), fgetpos(), fopen(), freopen(), fseek(), fseeko(),
fsetpos(), fstat(), ftell(), ftello(), ftruncate(), getrlimit(),
lockf(), lseek(), lstat(), mmap(), open(), read(), setrlimit(),
stat(), truncate(), write()
また、_LARGE_FILES フィーチャー・テスト・マクロは、パラメーターと戻りの型の幅を 64 ビットに拡張することによって、fseeko() および ftello() 関数が、2 GB より大きい MVS データ・セットおよび 4 GB より大きい VSAM データ・セットを操作できるようにします。fgetpos()、fopen()、freopen()、および fsetpos() 関数は、これらのサイズのデータ・セットでの操作を暗黙的にサポートするので、_LARGE_FILES フィーチャー・テスト・マクロの定義は必要ありません。
このフィーチャー・テスト・マクロは、AMODE 64 の値にアクセスする必要がある AMODE 31 アプリケーション用 に提供されています。ラージ・メモリー・サポートを使用するには、LANGLVL(LONGLONG) が必要です。
このフィーチャー・テスト・マクロは、新しい typedef、構造体、および関数を公開するので、アプリケーションは、9999 年 12 月 31 日の 23:59:59 UTC という人為的な限界まで構成されたカレンダー時間を処理することができます。
access(), asctime(), atof(), atoi(), atol(), chdir(), chmod(),
chown(), creat(), ctime(), dllload(), dllqueryfn(), dynalloc()
ecvt(), execv(), execve(), execvp(), fcvt(), fdopen(), fopen(),
freopen(), ftok(), gcvt(), getcwd(), getenv(), getgrnam(),
gethostbyaddr(), gethostbyname(), gethostname(), getlogin(),
getopt(), getpass(), getpwnam(), getpwuid(), getservbyname(),
getwd(), inetaddr(), inet_ntoa(),isalnum(), isalpha(), iscntrl(),
isdigit(), isgraph(), islower(), isprint(), ispunct(), isspace(),
isupper(), isxdigit(), link(), localeconv(), mbstowcs(), mbtowc(),
mkdir(), mknod(), mktemp(), nl_langinfo(), open(), opendir(),
perror(), popen(), ptsname(), putenv(), readdir(), regcomp(),
remove(), rename(), rexec(), rmdir(), scanf(), setenv(), setkey(),
setlocale(), setvbuf(), sprintf(), sscanf(), stat(), statvfs(),
strcasecmp(), strerror(), strncasecmp(), strtod(), strtol(),
strtoul(), system(), tempnam(), tmpnam(), toascii(), tolower(),
toupper(), uname(), unlink(), utime(), utimes()
LONGNAME コンパイラー・オプションを指定してコンパイルされ、POSIX 関数を使用するプログラムは、z/OS UNIX シェル環境の外部でプリリンカーを使用する場合、_LONGMAP を定義する必要があります。
_MSE_PROTOS フィーチャー・テスト・マクロは、以下の処理 を実行します。
このフィーチャー・テスト・マクロは、C99 規格の一部である新しいインターフェースが公開されないようにします。 新しい C99 インターフェースが公開されないようにするには、最初のヘッダーをインクルードする前に、このフィーチャー・テスト・マクロを定義する必要があります。
このフィーチャー・テスト・マクロは、含まれる関数プロトタイプおよび構造体に 応じて、BSD に類似したソケット・インターフェースを 定義します。 これは、_XOPEN_SOURCE_EXTENDED 1 と共に使用することができ、XPG4.2 ソケット・インターフェース が BSD に類似したインターフェースに置き換えられます。
0 と定義し、さらにほかのフィーチャー・テスト・マクロを何も定義しないと、すべてのシンボルが可視になります。_OPEN_DEFAULT のほかに、POSIX および (または) XPG4 フィーチャー・テスト・マクロだけが定義されている場合、要求されたシンボルだけが可視になります。そうでなければ、追加シンボル (LANGLVL(EXTENDED) コンパイラー・オプションが指定されたときの可視シンボルなど) が公開されることがあります。
1 と定義すると、このマクロは基本レベルの z/OS UNIX 機能 (POSIX.1、POSIX.1a、および POSIX.2) を提供します。
このフィーチャー・テスト・マクロは、メッセージおよびファイル記述子をモニターする ため、select()、selectex()、および poll() を 使用できるようにするインターフェースを定義します。
1 と定義すると、このマクロは MVS 5.1 で使用可能であったすべての機能を定義します。このマクロは、_OPEN_SYS を指定することと同じです。
2 と定義すると、このマクロは、XPG4、XPG4.2、およびすべての z/OS UNIX 拡張機能を含む、MVS 5.2.2 で使用可能なすべての機能を定義します。
3 と定義すると、このマクロは _ALL_SOURCE を指定することと同じです。
_OPEN_THREADS がアプリケーションに明示的に定義されていない場合、以下のいずれかが提供される場合を除き、_OPEN_SOURCE は _OPEN_THREADS 1 を定義します。
1 と定義すると、このマクロは、POSIX.1、POSIX.1a、POSIX.2 で必要とされるシンボルが可視となることを示します。_OPEN_THREADS マクロで定義されたどのシンボルも許可されます。
_OPEN_THREADS がアプリケーションに明示的に定義されていない場合、以下のいずれかが提供される場合を除き、_OPEN_SYS は _OPEN_THREADS 1 を定義します。
公開された標準のいずれかが、問題のヘッダーにシンボルを表示することを明示的に許可している場合、あるいはシンボルが z/OS UNIX System サービス拡張機能として定義された場合、追加のシンボルを可視にすることができます。
このフィーチャー・テスト・マクロは、_opendir2() と __readdir2() のインターフェースと関数プロトタイプを定義します。
#define を指定して任意の値に定義するときに、_OPEN_SYS_FILE_EXT は、ファイル変換、ファイル・タグ、およびファイル属性の操作機能性で必要とされるシンボルが可視となることを示します。
1 と定義すると、このフィーチャー・テスト・マクロは、<net/if.h> and <sys/ioctl.h> 内で検出された、ネットワーク・インターフェース の操作に必要な、BSD に似たソケット定義を公開します。 このフィーチャー・テスト・マクロは、z/OS V1R9 で使用可能になりました。
このフィーチャー・テスト・マクロは、X/Open プロセス間通信機能に対して z/OS UNIX 拡張機能を定義します。_OPEN_SYS_IPC_EXTENSIONS を定義すると、POSIX.1、POSIX.1a、および XPG4 のシンボルが可視になります。このマクロは、_XOPEN_SOURCE と共に使用してください。
このフィーチャー・テスト・マクロは、pthread 条件変数および mutex を共用メモリーで許可します。このフィーチャーが定義されると、pthread_mutex_t および pthread_cond_t はサ イズが大幅に大きくなります。
_XOPEN_SOURCE 600 または _UNIX03_THREADS のいずれかが定義された場合、ネーム・スペースは _OPEN_SYS_MUTEX_EXT マクロによって可視にされたすべてのエレメントを組み込みます。その場合、_OPEN_SYS_MUTEX_EXT は冗長となり、アプリケーションで定義する必要がありません。
このフィーチャー・テスト・マクロは、X/Open 疑似 TTY 機能に対して z/OS UNIX 拡張機能を定義します。_OPEN_SYS_PTY_EXTENSIONS を定義すると、POSIX.1、POSIX.1a、XPG4、および XPG4.2 のシンボルが可視になります。このマクロは、_XOPEN_SOURCE_EXTENDED 1 と共に使用してください。
このフィーチャー・テスト・マクロは、拡張ソケットおよびバルク・モード・サポート用に関数プロトタイプおよび構造体のインターフェースを定義します。
このフィーチャー・テスト・マクロは、accept_and_recv() の関数プロトタイプとインターフェースを定義します。
このフィーチャー・テスト・マクロは、マルチキャスト・ソース・フィルター処理の関数プロトタイプとインターフェースを定義します。
このフィーチャー・テスト・マクロは、着信した要求と同じインバウンド・インターフェースで UDP 応答パケットの送信に使用されるインターフェースを netinet/in.h で定義します。
定義されますと、インターネット・プロトコル (IP) バージョン 6 (IPv6) に関連したシンボルが可視になることを指示します。
_XOPEN_SOURCE を 600 に定義すると、Single UNIX Specification、バージョン 3 に必要な IPv6 シンボルを公開します。ただし、これらのシンボルは _OPEN_SYS_SOCK_IPV6 に関連した完全なネーム・スペースのサブセットのみで構成されます。アプリケーションでは両方のマクロを定義することができますが、そのようなアプリケーションは厳格には Single UNIX Specification、バージョン 3 に準拠していないことになります。
1 と定義すると、このマクロは POSIX.1、POSIX.1a、および POSIX.4a (ドラフト 6) で必要とされるシンボルが可視となることを示します。
2 と定義すると、1 と定義した場合に可視になるもののほかに、Single UNIX Specification、バージョン 3 から z/OS V1R07 に紹介された追加の pthread 関数が可視になります。_OPEN_THREADS が 2 に定義された場合、以下のシンボルがネーム・スペースに追加されます。
インターフェース | 定数 |
---|---|
pthread_getconcurrency() | PTHREAD_CANCEL_ENABLE |
pthread_setconcurrency() | PTHREAD_CANCEL_DISABLE |
pthread_setcancelstate() | PTHREAD_CANCEL_DEFERRED |
pthread_setcanceltype() | PTHREAD_CANCEL_ASYNCHRONOUS |
pthread_sigmask() | |
pthread_testcancel() | |
pthread_key_delete() |
3 と定義すると、動作と関数シグニチャーがまだ POSIX.4a ドラフト 6 仕様を基本としていますが、Single UNIX Specification、バージョン 3 の Thread オプションに必要なすべての pthread 関数が公開されます。さらに、_OPEN_THREADS 2 で公開されたシンボルに加え、_OPEN_THREAD 3 が以下のシンボルをネーム・スペースに追加します。
インターフェース | 定数 |
---|---|
pthread_atfork() | PTHREAD_CANCEL_CANCELED |
pthread_attr_getguardsize() | PTHREAD_COND_INITIALIZER |
pthread_attr_getschedparam() | PTHREAD_CREATE_DETACHED |
pthread_attr_getstack() | PTHREAD_CREATE_JOINABLE |
pthread_attr_getstackaddr() | PTHREAD_EXPLICIT_SCHED |
pthread_attr_setguardsize() | |
pthread_attr_setschedparam() | |
pthread_attr_setstack() | |
pthread_attr_setstackaddr() |
上記および _OPEN_THREADS 2 または 3 によって公開された Thread インターフェースは、Single UNIX Specification、バージョン 3 に完全に準拠しています。しかし、ライブラリーにある他のスレッド・インターフェースは、新しい動作を示さないか、または新しい標準で変わった関数シグニチャーを使用しません。_UNIX03_THREADS または _XOPEN_SOURCE 600 を定義するアプリケーションは、Single UNIX Specification、バージョン 3 で完全にコンパイルするスレッド・サポートを取得します。
_OPEN_THREADS が _XOPEN_SOURCE 600 と共に定義された場合、_OPEN_THREADS は優先順位を得て、_XOPEN_SOURCE 600 のデフォルトのスレッドの動作をオーバーライドします。しかし、_OPEN_THREADS および _UNIX03_THREADS は互いに排他的です。
#define を指定して任意の値に定義するときに、このマクロは POSIX.1 で必要とされるシンボルが可視となることを示します。明示的に POSIX.1 が問題のヘッダーにシンボルを表示することを許可した場合、追加のシンボルを可視にすることができます。
このフィーチャー・テスト・マクロは、DLL などの動的にロードされるモジュールから、アプリケーションの POSIX および XPG4 外部変数にアクセスできるようにします。スレッド固有の値にアクセスする機能があるこれらの外部変数の場合、このマクロによって外部変数のスレッド固有の値にアクセスできるようになり、その際明示的に関数を呼び出す必要はありません。
接頭部 _SHR_ が付いたフィーチャー・テスト・マクロおよび次に示すフィーチャー・テスト・マクロを使用して、個々の変数を外部化することができます。 _SHARE_EXT_VARS を定義して、そのセット全体にアクセスできます。
動的にロードされる モジュール (DLL など) から daylight 外部変数へのアクセスを共用する場合は、_SHR_DAYLIGHT フィーチャー・テスト・マクロを定義して、プログラム ・ソースに time.h を設定してください。
プログラムで char **environ が宣言されており、動的にロードされる モジュール (DLL など) から環境変数配列にアクセスする場合は、_SHR_ENVIRON フィーチャー・テスト・マクロを定義して、プログラム ・ソースに stdlib.h を設定してください。
動的にロードされるモジュール (DLL など) から h_errno 外部変数へのアクセスを共用する場合は、_SHR_H_ERRNO フィーチャー・テスト・マクロを定義して、プログラム・ソースに netdb.h をインクルードしてください。
動的にロードされる モジュール (DLL など) から __loc1 外部変数へのアクセスを共用する場合は、_SHR_LOC1 フィーチャー・テスト・マクロを定義して、プログラム ・ソースに libgen.h を設定してください。
動的にロードされる モジュール (DLL など) から loc1 外部変数へのアクセスを共用する場合は、_SHR_LOC1 フィーチャー・テスト・マクロを定義して、プログラム ・ソースに regexp.h を設定してください。
動的にロードされる モジュール (DLL など) から loc2 外部変数へのアクセスを共用する場合は、_SHR_LOC2 フィーチャー・テスト・マクロを定義して、プログラム ・ソースに regexp.h を設定してください。
動的にロードされる モジュール (DLL など) から locs 外部変数へのアクセスを共用する場合は、_SHR_LOCS フィーチャー・テスト・マクロを定義して、プログラム ・ソースに regexp.h を設定してください。
動的にロードされる モジュール (DLL など) から optarg 外部変数へのアクセスを共用する場合は、_SHR_OPTARG フィーチャー・テスト・マクロを定義して、プログラム ・ソースに unistd.h または stdio.h を設定してください。
動的にロードされる モジュール (DLL など) から opterr 外部変数へのアクセスを共用する場合は、_SHR_OPTERR フィーチャー・テスト・マクロを定義して、プログラム ・ソースに unistd.h または stdio.h を設定してください。
動的にロードされる モジュール (DLL など) から optind 外部変数へのアクセスを共用する場合は、_SHR_OPTIND フィーチャー・テスト・マクロを定義して、プログラム ・ソースに unistd.h または stdio.h を設定してください。
動的にロードされる モジュール (DLL など) から optopt 外部変数へのアクセスを共用する場合は、_SHR_OPTOPT フィーチャー・テスト・マクロを定義して、プログラム ・ソースに unistd.h または stdio.h を設定してください。
動的にロードされる モジュール (DLL など) から signgam 外部変数へのアクセスを共用する場合は、_SHR_SIGNGAM フィーチャー・テスト・マクロを定義して、プログラム ・ソースに math.h を設定してください。
動的にロードされるモジュール (DLL など) から t_errno 外部変数へ のアクセスを共用する場合は、_SHR_T_ERRNO フィーチャー・テスト・ マクロを定義して、プログラム・ソースに xti.h を設定してください。
動的にロードされるモジュール (DLL など) から timezone 外部変数へのアクセスを共用する場合は、_SHR_TIMEZONE フィーチャー・テスト・マクロを定義して、プログラム・ソースに time.h を設定してください。_SHR_TIMEZONE を定義する際のネーム・スペース違反を防ぐために、timezone 変数は、_timezone として参照されるようにする必要があります。
動的にロードされたモジュール (DLL など) から tzname 外部変数へのアクセスを共用する場合は、_SHR_TZNAME フィーチャー・テスト・マクロを定義して、プログラム ・ソースに time.h を設定してください。
このフィーチャー・テスト・マクロは、<stdint.h> に文書化されている整数定数用マクロを公開する C++ アプリケーションに必要です。
このフィーチャー・テスト・マクロは、<inttypes.h> に文書化されている形式指定子用マクロを公開する C++ アプリケーションに必要です。
この MACRO は C99 DFP 仕様に追加されます (C および C++ 用)。ユーザーは DFP サポートが必要な時にこの MACRO を定義します。これは、__IBM_DFP が定義されている場合、<math.h> のすべての DFP 指向定義およびその他のヘッダーが公開される原因となります。
このフィーチャー・テスト・マクロは、指定幅の整数型の限界、および <stdint.h> に文書化されているその他の整数型の限界を公開する C++ アプリケーションに必要です。
このフィーチャー・テスト・マクロは、「ISO/IEC DTR 19768: Draft Technical Report on C++ Library Extensions」の Chapter 8 で説明されている C++ TR1 C99 ネーム・スペースを公開します。
_TR1_C99 と _AIX_COMPATIBILITY の両方のフィーチャー・テスト・マクロが定義される場合、_AIX_COMPATIBILITY が優先されます。これは、copysign()、scalbn()、および浮動小数点種別関数に影響を与えます。
_TR1_C99 と _FP_MODE_VARIABLE の両方のフィーチャー・テスト・マクロが定義される場合、以下の関数に対して float 多重定義はサポートされません。
atan2()、 copysign()、fdim()、fma()、fmax()、fmin()、fmod()、frexp()、hypot()、 ldexp()、modf()、nextafter()、nexttoward()、pow()、remainder()、remquo()、 scalbln()、および scalbn()
また、_TR1_C99 と _FP_MODE_VARIABLE の両方のフィーチャー・テスト・マクロが設定される場合は、frexp() および ldexp() に対して long double 多重定義はサポートされません。
このフィーチャー・マクロ・テストには、z/OS V1.10 以降の z/OS XL C++ コンパイラーの使用が必要です。
このフィーチャー・テスト・マクロは、新しい Single UNIX Specification、バージョン 3 インターフェースを公開します。既存の API の動作は変更せず、また _XOPEN_SOURCE_EXTENDED などのフィーチャー・テスト・マクロによって制御されるインターフェースは公開しません。 _UNIX03_SOURCE によって公開される関数と動作は、Single UNIX Specification、バージョン 3 のサブセットであり、完全なインプリメンテーションではありません。C/C++ ランタイムで使用可能な完全な Single UNIX Specification、バージョン 3 実装環境を公開するためには、_XOPEN_SOURCE または _POSIX_C_SOURCE を参照してください。
リリース | _UNIX03_SOURCE で公開されるインターフェース |
---|---|
z/OS V1R6 | dlclose()、dlerror()、dlopen()、dlsym() |
z/OS V1R7 | sched_yield()、strerror_r()、unsetenv() |
z/OS V1R8 | flockfile()、 ftrylockfile()、 funlockfile()、 getc_unlocked()、 getchar_unlocked()、 putc_unlocked()、 putchar_unlocked() |
z/OS V1R9 | posix_openpt()、pselect()、sockatmark() |
このフィーチャー・テストは、すべての pthread 関数、関数シグニチャー、および Single UNIX Specification、バージョン 3 の Thread オプションに必要な動作を公開します。マクロは z/OS V1R9 以降をターゲットとしてコンパイルできます。
_UNIX03_THREADS を定義すると、_OPEN_SYS_MUTEX_EXT が冗長で _UNIX03_THREADS と共に定義する必要がないようにするために、そのフィーチャー・テスト・マクロ _OPEN_SYS_MUTEX_EXT でカバーされる内容を公開します。
_XOPEN_SOURCE が 600 に定義されている場合は、このフィーチャー・テスト・マクロは定義する必要はありません。_OPEN_THREADS が定義されていない限り、_XOPEN_SOURCE 600 は _UNIX03_THREADS と同じインターフェースおよび動作を使用可能にします。
_UNIX03_THREADS および _OPEN_THREADS は、互いの排他的です。
このフィーチャー・テスト・マクロを定義すると、以前にレガシー・フィーチャー・グループにあったかまたは obsolescent とマークされて、Single UNIX Specification、バージョン 3 から除去された、言語エレメントを公開します。そうでなければ、これらのエレメントは、_XOPEN_SOURCE 600 または POSIX_C_SOURCE 200112L でコンパイルすることによって公開されたネーム・スペースで可視にはなりません。
_UNIX03_WITHDRAWN が定義されると、以下の活動を終了したシンボルが公開されます。
関数 | 定数 |
---|---|
brk() | CLOCK_TICKS |
chroot() | IUCLC |
cuserid() | L_cuserid |
gamma() | NOSTR |
getdtablesize() | OLCUC |
getpagesize() | PASS_MAX |
getpass() | _SC_2_ C_VERSION |
getw() | _SC_PASS_MAX |
putw() | _SC_XOPEN_XCU_VERSION |
regcmp() | TMP_MAX |
regex() | XCASE |
sbrk() | YESSTR |
sigstack() | |
ttyslot() | |
valloc() | 外部変数 |
wait3() | __loc1 |
このフィーチャー・テスト・マクロは、va_arg、va_end、および va_start マクロのユーザー が、va_list 型を別に定義できるようにします。
このフィーチャー・テスト・マクロは、XPG4 標準 (1992 年 7 月) で定義されている機能を定義します。
500 と定義すると、このフィーチャー・テスト・マクロは、Single UNIX Specification、バージョン 2 に関連した特 定のキー機能を利用できるようにします。
600 と定義すると、このフィーチャー・テスト・マクロは、X/Open System Interface (XSI) 拡張に関連付けされたネーム・スペースおよび以下のオプションおよびオプション・グループと同様に、_POSIX_C_SOURCE 200112L によって定義されたネーム・スペースを含む Single UNIX Specification、バージョン 3 の完全な実装環境を公開します。
_XOPEN_SOURCE 600 を使用すると、いくつかの他のフィーチャー・テスト・マクロによってカバーされるネーム・スペースを公開し、それらのマクロをそれなりに冗長にします。以下は、_XOPEN_SOURCE 600 が定義された時に定義する必要のないものです。
_ISOC99_SOURCE | _POSIX_C_SOURCE |
_UNIX03_THREADS | _OPEN_SYS_MUTEX_EXT |
_UNIX03_SOURCE | _POSIX_SOURCE |
_XOPEN_SOURCE_EXTENDED |
_OPEN_THREADS が _XOPEN_SOURCE 600 と共に定義された場合、_OPEN_THREADS は優先順位を得て、Single UNIX Specification、バージョン 3 スレッドの動作をオーバーライドします。_OPEN_THREADS が影響している時はいつでも、アプリケーションが明示的にこのマクロを定義しない限り、_OPEN_SYS_MUTEX_EXT 拡張も除去されます。
_XOPEN_SOURCE 600 定義は、z/OS V1R9 以降使用可能です。それより以前のリリースでの使用は、コンパイル時にエラーとなります。
Single UNIX Specification、バージョン 3 の完全サポートには、C99 準拠コンパイラーを使用する必要があります。ほとんどのネーム・スペースは古いコンパイラーで使用可能ですが、バージョン 3 のいくつかのエレメント (<complex.h> や <tgmath.h> など) は可視になりません。
1 と定義すると、このマクロは、XPG4 標準と「UNIX ベースのオペレーティング・システムの共通 API」(1994 年 4 月 ドラフト版) のセットで定義された機能を定義します。