Each instance of a backslash character (\) immediately
followed by a new-line character is deleted, splicing
physical source lines to form logical source lines.
Only the last backslash on any physical source line
shall be eligible for being part of such a splice. A
source file that is not empty shall end in a new-line
character, which shall not be immediately preceded by
a backslash character before any such splicing takes
place.
C99 Rationale中进一步指出:
A backslash immediately before a newline has long been used to continue string literals, as well as preprocessing command lines. In the interest of easing machine generation of C, and of transporting code to machines with restrictive physical line lengths, the C89 Committee generalized this mechanism to permit any token to be continued by interposing a backslash/newline sequence.
* To: moz at compsoc dot man dot ac dot uk * Subject: Re: no newline at end of file * From: DJ Delorie <dj at redhat dot com> * Date: Sun, 15 Jul 2001 00:56:27 -0400 * CC: gcc at gcc dot gnu dot org * References: <20010715024419.A84310@compsoc.man.ac.uk>
> What is the rationale for this warning ? What can break or is it a > standards thing ?
Imagine foo.h:
blah blah blah<no newline>
Now bar.c:
#include "foo.h" #include "grill.h"
Now imagine a preprocessor that isn't smart enough to put the newline in for you...
原因其实也很简单,因为标准规定如此。C99第5.1.1.2节这样写道: Each instance of a backslash character (\) immediately followed by a new-line character is deleted, splicing physical source lines to form logical