diff options
Diffstat (limited to 'contrib/gcc/doc/cppopts.texi')
-rw-r--r-- | contrib/gcc/doc/cppopts.texi | 125 |
1 files changed, 99 insertions, 26 deletions
diff --git a/contrib/gcc/doc/cppopts.texi b/contrib/gcc/doc/cppopts.texi index 1cc688a..6e784de 100644 --- a/contrib/gcc/doc/cppopts.texi +++ b/contrib/gcc/doc/cppopts.texi @@ -1,4 +1,4 @@ -@c Copyright (c) 1999, 2000, 2001, 2002 +@c Copyright (c) 1999, 2000, 2001, 2002, 2003, 2004 @c Free Software Foundation, Inc. @c This is part of the CPP and GCC manuals. @c For copying conditions, see the file gcc.texi. @@ -17,10 +17,14 @@ Predefine @var{name} as a macro, with definition @code{1}. @item -D @var{name}=@var{definition} Predefine @var{name} as a macro, with definition @var{definition}. -There are no restrictions on the contents of @var{definition}, but if -you are invoking the preprocessor from a shell or shell-like program you -may need to use the shell's quoting syntax to protect characters such as -spaces that have a meaning in the shell syntax. +The contents of @var{definition} are tokenized and processed as if +they appeared during translation phase three in a @samp{#define} +directive. In particular, the definition will be truncated by +embedded newline characters. + +If you are invoking the preprocessor from a shell or shell-like +program you may need to use the shell's quoting syntax to protect +characters such as spaces that have a meaning in the shell syntax. If you wish to define a function-like macro on the command line, write its argument list with surrounding parentheses before the equals sign @@ -72,10 +76,12 @@ use @option{-o} to specify the output file. @item -Wall @opindex Wall -Turns on all optional warnings which are desirable for normal code. At -present this is @option{-Wcomment} and @option{-Wtrigraphs}. Note that -many of the preprocessor's warnings are on by default and have no -options to control them. +Turns on all optional warnings which are desirable for normal code. +At present this is @option{-Wcomment}, @option{-Wtrigraphs}, +@option{-Wmultichar} and a warning about integer promotion causing a +change of sign in @code{#if} expressions. Note that many of the +preprocessor's warnings are on by default and have no options to +control them. @item -Wcomment @itemx -Wcomments @@ -87,10 +93,17 @@ comment, or whenever a backslash-newline appears in a @samp{//} comment. @item -Wtrigraphs @opindex Wtrigraphs -Warn if any trigraphs are encountered. This option used to take effect -only if @option{-trigraphs} was also specified, but now works -independently. Warnings are not given for trigraphs within comments, as -they do not affect the meaning of the program. +@anchor{Wtrigraphs} +Most trigraphs in comments cannot affect the meaning of the program. +However, a trigraph that would form an escaped newline (@samp{??/} at +the end of a line) can, by changing where the comment begins or ends. +Therefore, only trigraphs that would form escaped newlines produce +warnings inside a comment. + +This option is implied by @option{-Wall}. If @option{-Wall} is not +given, this option is still enabled unless trigraphs are enabled. To +get trigraph conversion without warnings, but get the other +@option{-Wall} warnings, use @samp{-trigraphs -Wall -Wno-trigraphs}. @item -Wtraditional @opindex Wtraditional @@ -214,9 +227,9 @@ This implies that the choice of angle brackets or double quotes in an header will appear in @option{-MM} dependency output. This is a slight change in semantics from GCC versions 3.0 and earlier. +@anchor{dashMF} @item -MF @var{file} @opindex MF -@anchor{-MF} When used with @option{-M} or @option{-MM}, specifies a file to write the dependencies to. If no @option{-MF} switch is given the preprocessor sends the rules to the same place it would have sent @@ -246,11 +259,11 @@ files without updating the @file{Makefile} to match. This is typical output: -@example +@smallexample test.o: test.c test.h test.h: -@end example +@end smallexample @item -MT @var{target} @opindex MT @@ -266,9 +279,9 @@ argument to @option{-MT}, or use multiple @option{-MT} options. For example, @option{@w{-MT '$(objpfx)foo.o'}} might give -@example +@smallexample $(objpfx)foo.o: foo.c -@end example +@end smallexample @item -MQ @var{target} @opindex MQ @@ -276,9 +289,9 @@ $(objpfx)foo.o: foo.c Same as @option{-MT}, but it quotes any characters which are special to Make. @option{@w{-MQ '$(objpfx)foo.o'}} gives -@example +@smallexample $$(objpfx)foo.o: foo.c -@end example +@end smallexample The default target is automatically quoted, as if it were given with @option{-MQ}. @@ -293,7 +306,7 @@ basename of the input file and applies a @file{.d} suffix. If @option{-MD} is used in conjunction with @option{-E}, any @option{-o} switch is understood to specify the dependency output file -(but @pxref{-MF}), but if used without @option{-E}, each @option{-o} +(but @pxref{dashMF,,-MF}), but if used without @option{-E}, each @option{-o} is understood to specify a target object file. Since @option{-E} is not implied, @option{-MD} can be used to generate @@ -304,6 +317,17 @@ a dependency output file as a side-effect of the compilation process. Like @option{-MD} except mention only user header files, not system -header files. +@ifclear cppmanual +@item -fpch-deps +@opindex fpch-deps +When using precompiled headers (@pxref{Precompiled Headers}), this flag +will cause the dependency-output flags to also list the files from the +precompiled header's dependencies. If not specified only the +precompiled header would be listed and not the files that were used to +create it because those files are not consulted when a precompiled +header is used. + +@end ifclear @item -x c @itemx -x c++ @itemx -x objective-c @@ -436,8 +460,6 @@ Append @var{dir} to the prefix specified previously with path. @option{-iwithprefixbefore} puts it in the same place @option{-I} would; @option{-iwithprefix} puts it where @option{-idirafter} would. -Use of these options is discouraged. - @item -isystem @var{dir} @opindex isystem Search @var{dir} for header files, after all directories specified by @@ -448,6 +470,14 @@ is applied to the standard system directories. @xref{System Headers}. @end ifset +@item -fdollars-in-identifiers +@opindex fdollars-in-identifiers +@anchor{fdollars-in-identifiers} +Accept @samp{$} in identifiers. +@ifset cppmanual + @xref{Identifier characters}. +@end ifset + @item -fpreprocessed @opindex fpreprocessed Indicate to the preprocessor that the input file has already been @@ -470,6 +500,47 @@ correct column numbers in warnings or errors, even if tabs appear on the line. If the value is less than 1 or greater than 100, the option is ignored. The default is 8. +@item -fexec-charset=@var{charset} +@opindex fexec-charset +Set the execution character set, used for string and character +constants. The default is UTF-8. @var{charset} can be any encoding +supported by the system's @code{iconv} library routine. + +@item -fwide-exec-charset=@var{charset} +@opindex fwide-exec-charset +Set the wide execution character set, used for wide string and +character constants. The default is UTF-32 or UTF-16, whichever +corresponds to the width of @code{wchar_t}. As with +@option{-ftarget-charset}, @var{charset} can be any encoding supported +by the system's @code{iconv} library routine; however, you will have +problems with encodings that do not fit exactly in @code{wchar_t}. + +@item -finput-charset=@var{charset} +@opindex finput-charset +Set the input character set, used for translation from the character +set of the input file to the source character set used by GCC. If the +locale does not specify, or GCC cannot get this information from the +locale, the default is UTF-8. This can be overridden by either the locale +or this command line option. Currently the command line option takes +precedence if there's a conflict. @var{charset} can be any encoding +supported by the system's @code{iconv} library routine. + +@item -fworking-directory +@opindex fworking-directory +@opindex fno-working-directory +Enable generation of linemarkers in the preprocessor output that will +let the compiler know the current working directory at the time of +preprocessing. When this option is enabled, the preprocessor will +emit, after the initial linemarker, a second linemarker with the +current working directory followed by two slashes. GCC will use this +directory, when it's present in the preprocessed input, as the +directory emitted as the current working directory in some debugging +information formats. This option is implicitly enabled if debugging +information is enabled, but this can be inhibited with the negated +form @option{-fno-working-directory}. If the @option{-P} flag is +present in the command line, this option has no effect, since no +@code{#line} directives are emitted whatsoever. + @item -fno-show-column @opindex fno-show-column Do not print column numbers in diagnostics. This may be necessary if @@ -506,9 +577,9 @@ preprocessor, including predefined macros. This gives you a way of finding out what is predefined in your version of the preprocessor. Assuming you have no file @file{foo.h}, the command -@example +@smallexample touch foo.h; cpp -dM foo.h -@end example +@end smallexample @noindent will show all the predefined macros. @@ -616,7 +687,9 @@ execution, and report the final form of the include path. @opindex H Print the name of each header file used, in addition to other normal activities. Each name is indented to show how deep in the -@samp{#include} stack it is. +@samp{#include} stack it is. Precompiled header files are also +printed, even if they are found to be invalid; an invalid precompiled +header file is printed with @samp{...x} and a valid one with @samp{...!} . @item -version @itemx --version |