Commit 745ef6d6 by Neil Booth Committed by Neil Booth

cpp.texi: Update.

	* cpp.texi: Update.
	* gcc.dg/cpp/cmdlne-C.c: New test.

From-SVN: r34957
parent 9b55f29a
2000-07-11 Neil Booth <NeilB@earthling.net>
* cpp.texi: Update.
2000-07-11 Neil Booth <NeilB@earthling.net>
* cppinit.c: (cpp_reader_init): Allow digraphs by default.
(handle_option): Set digraphs according to standard.
Merge OPT_lang_c89 handler with OPT_std_c89.
......
......@@ -83,9 +83,9 @@ It is called a macro processor because it allows you to define
The C preprocessor is intended only for macro processing of C, C++ and
Objective C source files. For macro processing of other files, you are
strongly encouraged to use alternatives like M4, which will likely give
you better results and avoid many problems. For example, the C
preprocessor sometimes outputs extra white space to avoid inadvertent C
token concatenation, and this may cause problems with other languages.
you better results and avoid many problems. For example, normally the C
preprocessor does not preserve arbitrary whitespace verbatim, but
instead replaces each sequence with a single space.
For use on C-like source files, the C preprocessor provides four
separate facilities that you can use as you see fit:
......@@ -2908,11 +2908,14 @@ and will be sent to a program which might be confused by the
@item -C
@findex -C
Do not discard comments: pass them through to the output file.
Comments appearing in arguments of a macro call will be copied to the
output before the expansion of the macro call.
You should be prepared for unwanted side effects when using -C. For
Do not discard comments. All comments are passed through to the output
file, except for comments in processed directives, which are deleted
along with the directive. Comments appearing in the expansion list of a
macro will be preserved, and appear in place wherever the macro is
invoked.
You should be prepared for side effects when using -C; it causes the
preprocessor to treat comments as tokens in their own right. For
example, macro redefinitions that were trivial when comments were
replaced by a single space might become significant when comments are
retained. Also, comments appearing at the start of what would be a
......
2000-07-11 Neil Booth <NeilB@earthling.net>
* gcc.dg/cpp/cmdlne-C.c: New.
2000-07-09 Neil Booth <NeilB@earthling.net>
* testsuite/gcc.dg/cpp/directiv.c: New tests.
* testsuite/gcc.dg/cpp/undef1.c: Update.
* gcc.dg/cpp/directiv.c: New tests.
* gcc.dg/cpp/undef1.c: Update.
2000-07-08 Angela Marie Thomas <angela@cygnus.com>
......
/* Copyright (C) 2000 Free Software Foundation, Inc. */
/* { dg-do preprocess } */
/* { dg-options -C } */
/* Test -C doesn't fail with #define. #define is the tricky case,
being the only directive that remembers its comments.
-C treats comments as tokens in their own right, so e.g. comment at
the beginning of a directive turns it into a non-directive. */
#define simple no comments
#/**/define bad_directive /* { dg-error "invalid" } */
#define/**/obj_like/**/(some)/**/thing/**/
#define fun_like(/**/x/**/,/**/y/**/)/**/
/**/#define not_a_macro
#if !defined simple || !defined obj_like || !defined fun_like
#error Missed some macros with -C
#endif
#ifdef not_a_macro
#error not_a_macro is!
#endif
/* Check obj_like2 doesn't expect arguments, and fun_like does. */
obj_like2
fun_like (foo, bar)
/* Check OK to redefine fun_like without comments in the params. */
#define fun_like(x, y)/**/
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment