1@c Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
2@c 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
3@c This is part of the GCC manual.
4@c For copying conditions, see the file gcc.texi.
5
6@ignore
7@c man begin INCLUDE
8@include gcc-vers.texi
--- 172 unchanged lines hidden (view full) ---
181-fno-implicit-templates @gol
182-fno-implicit-inline-templates @gol
183-fno-implement-inlines -fms-extensions @gol
184-fno-nonansi-builtins -fno-operator-names @gol
185-fno-optional-diags -fpermissive @gol
186-frepo -fno-rtti -fstats -ftemplate-depth-@var{n} @gol
187-fno-threadsafe-statics -fuse-cxa-atexit -fno-weak -nostdinc++ @gol
188-fno-default-inline -fvisibility-inlines-hidden @gol
189-fvisibility-ms-compat @gol
190-Wabi -Wctor-dtor-privacy @gol
191-Wnon-virtual-dtor -Wreorder @gol
192-Weffc++ -Wno-deprecated -Wstrict-null-sentinel @gol
193-Wno-non-template-friend -Wold-style-cast @gol
194-Woverloaded-virtual -Wno-pmf-conversions @gol
195-Wsign-promo}
196
197@item Language Independent Options
--- 1424 unchanged lines hidden (view full) ---
1622compare pointers to a particular inline method, you might mark it as
1623having default visibility. Marking the enclosing class with explicit
1624visibility will have no effect.
1625
1626Explicitly instantiated inline methods are unaffected by this option
1627as their linkage might otherwise cross a shared library boundary.
1628@xref{Template Instantiation}.
1629
1630@item -fvisibility-ms-compat
1631@opindex fvisibility-ms-compat
1632This flag attempts to use visibility settings to make GCC's C++
1633linkage model compatible with that of Microsoft Visual Studio.
1634
1635The flag makes these changes to GCC's linkage model:
1636
1637@enumerate
1638@item
1639It sets the default visibility to @code{hidden}, like
1640@option{-fvisibility=hidden}.
1641
1642@item
1643Types, but not their members, are not hidden by default.
1644
1645@item
1646The One Definition Rule is relaxed for types without explicit
1647visibility specifications which are defined in more than one different
1648shared object: those declarations are permitted if they would have
1649been permitted when this option was not used.
1650@end enumerate
1651
1652In new code it is better to use @option{-fvisibility=hidden} and
1653export those classes which are intended to be externally visible.
1654Unfortunately it is possible for code to rely, perhaps accidentally,
1655on the Visual Studio behaviour.
1656
1657Among the consequences of these changes are that static data members
1658of the same type with the same name but defined in different shared
1659objects will be different, so changing one will not change the other;
1660and that pointers to function members defined in different shared
1661objects may not compare equal. When this flag is given, it is a
1662violation of the ODR to define types with the same name differently.
1663
1664@item -fno-weak
1665@opindex fno-weak
1666Do not use weak symbol support, even if it is provided by the linker.
1667By default, G++ will use weak symbols if they are available. This
1668option exists only for testing, and should not be used by end-users;
1669it will result in inferior code and has no benefits. This option may
1670be removed in a future release of G++.
1671
--- 12369 unchanged lines hidden ---
2@c 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
3@c This is part of the GCC manual.
4@c For copying conditions, see the file gcc.texi.
5
6@ignore
7@c man begin INCLUDE
8@include gcc-vers.texi
--- 172 unchanged lines hidden (view full) ---
181-fno-implicit-templates @gol
182-fno-implicit-inline-templates @gol
183-fno-implement-inlines -fms-extensions @gol
184-fno-nonansi-builtins -fno-operator-names @gol
185-fno-optional-diags -fpermissive @gol
186-frepo -fno-rtti -fstats -ftemplate-depth-@var{n} @gol
187-fno-threadsafe-statics -fuse-cxa-atexit -fno-weak -nostdinc++ @gol
188-fno-default-inline -fvisibility-inlines-hidden @gol
189-fvisibility-ms-compat @gol
190-Wabi -Wctor-dtor-privacy @gol
191-Wnon-virtual-dtor -Wreorder @gol
192-Weffc++ -Wno-deprecated -Wstrict-null-sentinel @gol
193-Wno-non-template-friend -Wold-style-cast @gol
194-Woverloaded-virtual -Wno-pmf-conversions @gol
195-Wsign-promo}
196
197@item Language Independent Options
--- 1424 unchanged lines hidden (view full) ---
1622compare pointers to a particular inline method, you might mark it as
1623having default visibility. Marking the enclosing class with explicit
1624visibility will have no effect.
1625
1626Explicitly instantiated inline methods are unaffected by this option
1627as their linkage might otherwise cross a shared library boundary.
1628@xref{Template Instantiation}.
1629
1630@item -fvisibility-ms-compat
1631@opindex fvisibility-ms-compat
1632This flag attempts to use visibility settings to make GCC's C++
1633linkage model compatible with that of Microsoft Visual Studio.
1634
1635The flag makes these changes to GCC's linkage model:
1636
1637@enumerate
1638@item
1639It sets the default visibility to @code{hidden}, like
1640@option{-fvisibility=hidden}.
1641
1642@item
1643Types, but not their members, are not hidden by default.
1644
1645@item
1646The One Definition Rule is relaxed for types without explicit
1647visibility specifications which are defined in more than one different
1648shared object: those declarations are permitted if they would have
1649been permitted when this option was not used.
1650@end enumerate
1651
1652In new code it is better to use @option{-fvisibility=hidden} and
1653export those classes which are intended to be externally visible.
1654Unfortunately it is possible for code to rely, perhaps accidentally,
1655on the Visual Studio behaviour.
1656
1657Among the consequences of these changes are that static data members
1658of the same type with the same name but defined in different shared
1659objects will be different, so changing one will not change the other;
1660and that pointers to function members defined in different shared
1661objects may not compare equal. When this flag is given, it is a
1662violation of the ODR to define types with the same name differently.
1663
1664@item -fno-weak
1665@opindex fno-weak
1666Do not use weak symbol support, even if it is provided by the linker.
1667By default, G++ will use weak symbols if they are available. This
1668option exists only for testing, and should not be used by end-users;
1669it will result in inferior code and has no benefits. This option may
1670be removed in a future release of G++.
1671
--- 12369 unchanged lines hidden ---