Controlling C++ Extensions

The C++ compiler has additional extensions that you can activate using the pragma cpp_extensions.

If you enable this pragma, the compiler lets you use the following extensions to the ISO C++ standard:

#pragma cpp_extensions on
void foo()
{
union {
long hilo;
struct { short hi, lo; };
// anonymous struct
};
hi=0x1234;
lo=0x5678;
// hilo==0x12345678
}

#pragma cpp_extensions on
struct Foo { void f(); }
void Foo::f()
{
void (Foo::*ptmf1)() = &Foo::f;
// ALWAYS OK

void (Foo::*ptmf2)() = f;
// OK if you enabled cpp_extensions.
}

To check this setting, use the __option (cpp_extensions). By default, this setting is off.

See Checking Option Settings for information on how to use this directive.