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