gcc: Backwards Compatibility

1 
1 7.12 Backwards Compatibility
1 ============================
1 
1 Now that there is a definitive ISO standard C++, G++ has a specification
1 to adhere to.  The C++ language evolved over time, and features that
1 used to be acceptable in previous drafts of the standard, such as the
1 ARM [Annotated C++ Reference Manual], are no longer accepted.  In order
1 to allow compilation of C++ written to such drafts, G++ contains some
1 backwards compatibilities.  _All such backwards compatibility features
1 are liable to disappear in future versions of G++._  They should be
1 considered deprecated.  ⇒Deprecated Features.
1 
1 'For scope'
1      If a variable is declared at for scope, it used to remain in scope
1      until the end of the scope that contained the for statement (rather
1      than just within the for scope).  The deprecated '-fno-for-scope'
1      option enables this non-standard behavior.  Without the option, G++
1      retains this, but issues a warning, if such a variable is accessed
1      outside the for scope.
1 
1      The behavior is deprecated, only available with '-std=c++98'
1      '-std=gnu++98' languages and you must use the '-fpermissive' option
1      to enable it.  The behavior will be removed.
1 
1 'Friend Injection'
1      The '-ffriend-injection' option makes injected friends visible to
1      regular name lookup, unlike standard C++.  This option is
1      deprecated and will be removed.
1 
1 'Implicit C language'
1      Old C system header files did not contain an 'extern "C" {...}'
1      scope to set the language.  On such systems, all header files are
1      implicitly scoped inside a C language scope.  Also, an empty
1      prototype '()' is treated as an unspecified number of arguments,
1      rather than no arguments, as C++ demands.
1