-->

Previous | Table of Contents | Next

Page 158

variables you declared may not exist at all; flow of control may briefly move where you did not expect it; some statements may not be executed because they compute constant results or their values were already at hand; some statements may execute in different places because they were moved out of loops.
Nevertheless, it proves possible to debug optimized output. This makes it reasonable to use the optimizer for programs that might have bugs.
_Idir Append directory dir to the list of directories searched for include files.
_Ldir Add directory dir to the list of directories to be searched for _l.
_llibrary Use the library named library when linking. (C++ programs often require _lg++ for successful linking.)
_nostdinc Do not search the standard system directories for header files. Only the directories you have specified with _I options (and the current directory, if appropriate) are searched.
_nostdinc++ Do not search for header files in the standard directories specific to C++, but do still search the other standard directories. (This option is used when building libg++.)
_O Optimize. Optimizing compilation takes somewhat more time, and a lot more memory for a large function.
_o file Place output in file file.
_S Stop after the stage of compilation proper; do not assemble. The output is an assembler code file for each nonassembler input file specified.
_traditional Attempt to support some aspects of traditional C compilers. Specifically, for both C and C++ programs:
In the preprocessor, comments convert to nothing at all, rather than to a space. This allows traditional token concatenation.
In the preprocessor, macro arguments are recognized within string constants in a macro definition (and their values are stringified, though without additional quote marks, when they appear in such a context). The preprocessor always considers a string constant to end at a newline.
The preprocessor does not predefine the macro STDC when you use _traditional, but still predefines GNUC (since the GNU extensions indicated by GNUC are not affected by _traditional). If you need to write header files that work differently depending on whether _traditional is in use, by testing both of these predefined macros you can distinguish four situations: GNU C, traditional GNU C, other ANSI C compilers, and other old C compilers.
In the preprocessor, comments convert to nothing at all, rather than to a space. This allows traditional token concatenation.
String "constants" are not necessarily constant; they are stored in writable space, and identical looking constants are allocated separately. For C++ programs only (not C), _traditional has one additional effect: assignment to this is permitted. This is the same as the effect of _fthis_is_variable.
_Umacro Undefine macro macro.
_Wall Issue warnings for conditions that pertain to usage that we recommend avoiding and that we believe is easy to avoid, even in conjunction with macros.
_Wenum_clash Warn when converting between different enumeration types.
_Woverloaded_virtual In a derived class, the definitions of virtual functions must match the type signature of a virtual function declared in the base class. Use this option to request warnings when a derived class declares a function that may be an erroneous attempt to define a virtual function; that is, warn when a function with the same name as a virtual function in the base class, but with a type signature that doesn't match any virtual functions from the base class.

Previous | Table of Contents | Next