このセクションのマクロは、ライブラリーのオプションの機能を制御します。
TBB_DEPRECATED マクロは、現在のバージョンの機能と競合が発生する古いバージョンの機能 (非推奨) を制御します。インテル® スレッディング・ビルディング・ブロック (インテル® TBB) 2.1 のインターフェイスを使用する場合は、1 に定義します。
TBB_USE_EXCEPTIONS マクロは、ライブラリー・ヘッダーが try、catch、および throw のような例外処理構造を使用するかどうかを制御します。TBB_USE_EXCEPTIONS=0 の場合、ヘッダーはこれらの構造を使用しません。
Windows®、Linux*、OS X* オペレーティング・システムのデフォルト値は、コンパイラーで例外処理構造が有効にされている場合は 1、その他の場合は 0 です。
TBB_USE_EXCEPTIONS=0 であっても、ランタイム・ライブラリーは例外をスローすることがあります。
TBB_USE_CAPTURED_EXCEPTION マクロは、ライブラリー内での例外の再スローを制御します。C++ 1998 は、1 つのスレッドで例外をキャッチし、別のスレッドに再スローすることをサポートしていないため、ライブラリーは tbb::captured_exception と呼ばれる例外オブジェクトを再スローして並べ替えることがあります。
TBB_USE_CAPTURED_EXCEPTION=1 に定義すると、ライブラリーは例外オブジェクトを再スローできます。これは、プラットフォーム間の動作を統一する上で便利です。
TBB_USE_CAPTURED_EXCEPTION=0 に定義すると、(例外オブジェクトではなく) キャッチされた例外の再スローが要求されます。この設定は、C++11 の std::exception_ptr 機能をサポートするプラットフォームでのみ有効です。その他の場合は、コンパイル時診断が発行されます。
Windows®、Linux* および OS X* オペレーティング・システムのデフォルト値は、std::exception_ptr をサポートするホスト・コンパイラーでは 1、その他の場合は 0 です。IA-64 アーキテクチャー・プロセッサーでは、デフォルト値は 0 です。
例外の伝播が正しく行われるように、適切なライブラリー・バイナリーを使用してください。
C++11 仕様のコードを有効にするには、C++11 モードをサポートするコンパイラーを使用し、C++11 モードでコードをコンパイルします。コンパイラーの C++11 のサポートは、デフォルトではオフです。次の表は、サポートをオンにするオプションを示しています。
環境 |
インテル® C++ コンパイラー 11.0 コンパイルコマンドとオプション |
---|---|
Windows® システム |
icl /Qstd=c++0x foo.cpp (13.0 以降では /Qstd=C++11 を利用) |
Linux* システム OS X* システム |
icc -std=c++0x foo.cpp (13.0 以降では /Qstd=C++11 を利用) |
場合によっては、インテル® TBB ヘッダーは C++ 標準ライブラリーの C++11 機能を正しく検出できません。例えば、GNU libstdc++ ライブラリーを、GCC バージョンマクロ (__GNUC__ など) を設定しないコンパイラーや、libstdc++ のバージョンと一致しないバージョンを設定する Clang コンパイラーとともに使用すると、検出に失敗します。
検出に失敗する場合、マクロ TBB_USE_GLIBCXX_VERSION を使用して GNU libstdc++ の適切なバージョンを指定できます。Major*10000 + Minor*100 + Patch になるようにマクロの値を定義します。ここで、Major.Minor.Patch は実際の GCC/libstdc++ のバージョンです (不明な場合は、'gcc -dumpversion' コマンドを実行して取得できます)。例えば、GCC 4.9.2 の libstdc++ を使用する場合は、TBB_USE_GLIBCXX_VERSION=40902 のように定義します。