General IBM extensions

The following feature is enabled by default at all extended language levels:
Table 1. General IBM extensions
Language feature Discussed in:
Allowed types in typedef definitions typedef definitions
The following feature is disabled by default at all language levels. It also can be enabled or disabled by an individual option.
Table 2. General IBM extensions with individual option controls
Language feature Discussed in: Individual option controls
A non-const or volatile lvalue reference bound to an rvalue of a user-defined type Initialization of references (C++ only) LANGLVL([NO]COMPATRVALUEBINDING)
Extra text after #endif or #else Extension of #endif and #else (IBM extension) LANGLVL([NO]TEXTAFTERENDIF)

The following feature is enabled with the LANGLVL(COMPAT366 | EXTENDED) option. It can also be enabled or disabled by a specific compiler option, listed in the following table:

Table 3. General IBM extensions with individual option controls
Language feature Discussed in: Individual option controls
Non-C99 IBM long long extension Types of integer literals that are supported in pre-C99 and pre-C++11 modes

[NO]LONGLONG

The following feature is enabled with the LANGLVL(EXTENDED0X) option. It can also be enabled or disabled by specific compiler options, listed in the following table:
Table 4. General IBM extensions with individual option controls
Language feature Discussed in: Individual option controls
C99 long long feature with the associated IBM extensions Types of integer literals in C99 and C++11
C++11
LANGLVL([NO]C99LONGLONG),
IBM extension
LANGLVL([NO]EXTENDEDINTEGERSAFE)