Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Published by Scroll Versions from space CPPTDESKDEV and version 10.4.1

...

C++test supports the following distributions of the GCC compiler:

  • Windows
    • GCC 2.95.x.
    • GCC  3.2.x.
    • GCC  3.3.x.
    • GCC  3. 4.x.GCC 4.0.x
    • GCC 4.1.x
    • GCC 4.2.x
    • GCC 4.3.x
    • GCC 4.4.x
    • GCC 4.5.x
    • GCC 4.6.x
    • GCC 4.7.x
    • GCC 4.8.x (x86 and x86-64)
    • GCC 4.9.x (x86 and x86-64)
    • GCC 5.x (x86 and x86-64)
    • GCC 6.x (x86 and x86-64)
    Linux
    • GCC 2.9.x
    • GCC 3.2.x
    • GCC 3.3GCC 7.x (x86 and x86-64)
    • GCC 38.4.x (x86 and x86-64)
  • Linux
    • GCC 4.0.x (x86 and x86-64)
    • GCC 4.1.x (x86 and x86-64)
    • GCC 4.2.x (x86 and x86-64)
    • GCC 4.3.x (x86 and x86-64)
    • GCC 4.4.x (x86 and x86-64)
    • GCC 4.5.x (x86 and x86-64)
    • GCC 4.6.x (x86 and x86-64)
    • GCC 4.7.x (x86 and x86-64)
    • GCC 4.8.x (x86 and x86-64)
    • GCC 4.9.x (x86 and x86-64)
    • GCC 5.x (x86 and x86-64)
    • GCC 6.x (x86 and x86-64)
    • GCC 7.x (x86 and x86-64)
    • GCC 8.x (x86 and x86-64)
  • GCC-based cross-compilers listed in Compilers.
  • Other GCC-based cross-compilers and custom GCC compiler builds based on GCC compiler versions listed above. Heavily modified GCC-based compilers, as well as their non-standard extensions, may not be supported.

To use any of these supported distributions, the directory containing the GCC executable must be included in the $PATH environment variable.

...

Tip

...

.

Unsupported Compiler Extensions for GCC Compilers

...

GCC 2.95.x

Unsupported Features

  • Arrays of Variable Length as Arguments to Functions

    Code Block
    void tester (int len, char data[len][len])
    {
    }

    Complex Numbers

  • Nested Functions
  • Named Return Values
  • Virtual Functions With Overridden Return Types

    Code Block
    class A
    {
    	public:
    		virtual void* a();
    };
    class B:
    	public A
    {
    	public:
    		virtual B* a(); // Return type changed from void* to
    			(compatible) B*.
    };

Incompatibilities

  • Function Attributes

    Code Block
    void fatal () __attribute__ ((noreturn));
    void fatal () { }
    typedef void voidfn ();
    volatile voidfn fatal;
      "void fatal()"
  • Member Access Checking

    Code Block
    class A
    {
    	public:
    		void pub_func();
    	protected:
    		void prot_func();
    };
    class B : public A
    {
    	public:
    		void foo()
    		{
    			&A::prot_func;
    		}
    };

GCC 3.2.x

Unsupported Features

  • Arrays of Variable Length as Arguments to Functions

    Code Block
    void tester (int len, char data[len][len])
    {
    }
  • Complex Numbers
  • Nested Functions
  • Named Return Values
  • Virtual Functions With Overridden Return Types

    Code Block
    class A
    {
    	public:
    		virtual void* a();
    };
    class B:
    	public A
    {
    	public:
    		virtual B* a(); // Return type changed from void* to
    			(compatible) B*.
    };
  • Java Extensions (like extern "Java", java attributes)
  • Restricting Pointer Aliasing for Member Functions

    Code Block
    class T
    {
    	public:
    		void fn();
    };
    void T::fn () __restrict__
    {
    }

Incompatibilities

  • Function Attributes

    Code Block
    void fatal () __attribute__ ((noreturn));
    void fatal () { }
    typedef void voidfn ();
    volatile voidfn fatal;
     "void fatal()"
  • Member Access Checking

    Code Block
     class A
    {
    	public:
    		void pub_func();
    	protected:
    		void prot_func();
    };
    class B : public A
    {
    	public:
    		void foo()
    		{
    			&A::prot_func;
    		}
    };
  • Attributes After Declarator

    Code Block
    class X
    {
    	public:
    		X(int) {}
    };
    X x(1) __attribute__((aligned (16)));

GCC 3.3.x

Unsupported Features

  • Arrays of Variable Length as Arguments to Functions

    Code Block
     void tester (int len, char data[len][len])
    {
    }
  • Complex Numbers
  • Nested Functions
  • Named Return Values
  • Virtual Functions With Overridden Return Types

    Code Block
     class A
    {
    	public:
    		virtual void* a();
    };
    class B:
    	public A
    {
    	public:
    		virtual B* a(); // Return type changed from void* to
    			(compatible) B*.
    };
  • Java Extensions (like extern "Java", java attributes)
  • Restricting Pointer Aliasing for Member Functions

    Code Block
     class T
    {
    	public:
    		void fn();
    };
    void T::fn () __restrict__
    {
    }

Incompatibilities

  • Function Attributes

    Code Block
    void fatal () __attribute__ ((noreturn));
    void fatal () { }
    typedef void voidfn ();
    volatile voidfn fatal;
  • Member Access Checking

    Code Block
    class A
    {
    public:
    void pub_func();
    protected:
    void prot_func();
    };
    class B : public A
    {
    public:
    void foo()
    {
    &A::prot_func;
    }
    };
  • Attributes After Declarator

    Code Block
    class X
    {
    public:
    X(int) {}
    };
    X x(1) __attribute__((aligned (16)));

GCC 3.4.x

Unsupported Features

...

Arrays of Variable Length as Arguments to Functions

Code Block
void tester (int len, char data[len][len])
{
}

...

Virtual Functions With Overridden Return Types

...

...

Restricting Pointer Aliasing for Member Functions

Code Block
class T
{
	public:
		void fn();
};
void T::fn () __restrict__
{
}

Incompatibilities

Function Attributes

...

GCC 4.0.x

Unsupported Features

  • Arrays of Variable Length as Arguments to Functions

    Code Block
    void tester (int len, char data[len][len])
    {
    }
  • Complex Numbers
  • Nested Functions
  • Virtual Function With Overridden Return Type

    Code Block
    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
    };
  • Java Extensions (like extern "Java", java attributes)
  • Offsetof extension
  • Restricting Pointer Aliasing for Member functions

    Code Block
    class T
    {
    	public:
    		void fn();
    };
    void T::fn () __restrict__ // EDG won't compile this
    {
    }

Incompatibilities

  • Function Attributes

    Code Block
    void fatal () __attribute__ ((noreturn));
    void fatal () { }
    typedef void voidfn ();
    volatile voidfn fatal; // EDG: declaration is incompatible with
    // "void fatal()"
  • Friend Declarations

    Code Block
    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.
    		}
    	};
    }

...

Same as for GCC 4.0.x.

GCC 6.x

Same as for GCC 4.0.x

GCC 7.x

Same as for GCC 4.0.x.

GCC 8.x

Same as for GCC 4.0.x.

Missing C++17 features:

N4295 Folding expressions

P0036R0 Unary Folds and Empty Parameter Packs2a features are not supported.