C++test は次の GCC コンパイラをサポートします。
これらの GCC コンパイラを使用するには、GCC の実行ファイルがあるディレクトリを PATH 環境変数に追加する必要があります。
ヒント 一部のバージョンの Cygwin では、GCC 2.95.x と GCC 3.x を同一マシンにインストールできます。GCC 2.95.x と GCC 3.x の実行モジュールの名前が異なるため、 両方を $PATH に指定して C++test で検出できます。 |
このセクションでは、C++test が現在サポートしていない GCC コンパイラ拡張について説明します。GNU コンパイラ拡張についての情報のソースとして http://gcc.gnu.org/onlinedocs を使用しました。
これらの制限事項は、「組込みプラットフォームとクロス コンパイラ」 に記載された GCC ベースのクロス コンパイラ、他の GCC ベースのクロス コンパイラ、およびカスタム GCC コンパイラ ビルドの適切なバージョンにも適用されます。
関数への引数として変数長の配列
void tester (int len, char data[len][len]) { } |
上書きされる戻り型を持つ仮想関数
class A { public: virtual void* a(); }; class B: public A { public: virtual B* a(); // Return type changed from void* to (compatible) B*. }; |
関数属性
void fatal () __attribute__ ((noreturn)); void fatal () { } typedef void voidfn (); volatile voidfn fatal; "void fatal()" |
メンバー アクセスのチェック
class A { public: void pub_func(); protected: void prot_func(); }; class B : public A { public: void foo() { &A::prot_func; } }; |
関数への引数として変数長の配列
void tester (int len, char data[len][len]) { } |
上書きされる戻り型を持つ仮想関数
class A { public: virtual void* a(); }; class B: public A { public: virtual B* a(); // Return type changed from void* to (compatible) B*. }; |
class T { public: void fn(); }; void T::fn () __restrict__ { } |
関数属性
void fatal () __attribute__ ((noreturn)); void fatal () { } typedef void voidfn (); volatile voidfn fatal; "void fatal()" |
メンバー アクセスのチェック
class A { public: void pub_func(); protected: void prot_func(); }; class B : public A { public: void foo() { &A::prot_func; } }; |
宣言子の後の属性
class X { public: X(int) {} }; X x(1) __attribute__((aligned (16))); |
関数への引数として変数長の配列
void tester (int len, char data[len][len]) { } |
複素数
ネストされた関数
名前付き戻り値
上書きされる戻り型を持つ仮想関数
class A { public: virtual void* a(); }; class B: public A { public: virtual B* a(); // Return type changed from void* to (compatible) B*. }; |
メンバー関数のポインター エイリアスの制限
class T { public: void fn(); }; void T::fn () __restrict__ { } |
関数属性
void fatal () __attribute__ ((noreturn)); void fatal () { } typedef void voidfn (); volatile voidfn fatal; |
メンバー アクセスのチェック
class A { public: void pub_func(); protected: void prot_func(); }; class B : public A { public: void foo() { &A::prot_func; } }; |
宣言子の後の属性
class X { public: X(int) {} }; X x(1) __attribute__((aligned (16))); |
関数への引数として変数長の配列
void tester (int len, char data[len][len]) { } |
上書きされる戻り型を持つ仮想関数
class A { public: virtual void* a(); }; class B: public A { public: virtual B* a(); // Return type changed from void* to (compatible) B*. }; |
メンバー関数のポインター エイリアスの制限
class T { public: void fn(); }; void T::fn () __restrict__ { } |
関数属性
void fatal () __attribute__ ((noreturn)); void fatal () { } typedef void voidfn (); volatile voidfn fatal; |
関数への引数として変数長の配列
void tester (int len, char data[len][len]) { } |
上書きされる戻り型を持つ仮想関数
class A { public: virtual void* a(); }; class B: public A { public: virtual B* a(); // Return type changed from void* to (compatible) B*. // It is ok in GCC but EDG will complain }; |
メンバー関数のポインター エイリアスの制限
class T { public: void fn(); }; void T::fn () __restrict__ // EDG won't compile this { } |
関数属性
void fatal () __attribute__ ((noreturn)); void fatal () { } typedef void voidfn (); volatile voidfn fatal; // EDG: declaration is incompatible with // "void fatal()" |
friend 宣言
class A; namespace N { class B { friend class A; // In GCC 4.0+ it refer to N::A (which has not been // declared yet) But EDG and older GCCs refer to ::A int _private; }; class A { void foo() { B b; b._private = 0; // EDG inaccessible field. } }; } |
GCC 4.0.x と同じです。
GCC 4.0.x と同じです。
GCC 4.0.x と同じです。
GCC 4.0.x と同じです。
GCC 4.0.x と同じです。
GCC 4.0.x と同じです。
GCC 4.0.x と同じです。
GCC 4.0.x と同じです。
GCC 4.0.x と同じです。
GCC 4.0.x と同じです。