* What is the purpose of 'warning: no newline at end of file'?
@ 2005-07-07 3:34 Neo Anderson
2005-07-07 3:40 ` Jonathan Turkanis
0 siblings, 1 reply; 10+ messages in thread
From: Neo Anderson @ 2005-07-07 3:34 UTC (permalink / raw)
To: gcc-help
I don't even think it's a problem. Why do I need (or better have) a line
ending?
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: What is the purpose of 'warning: no newline at end of file'?
2005-07-07 3:34 What is the purpose of 'warning: no newline at end of file'? Neo Anderson
@ 2005-07-07 3:40 ` Jonathan Turkanis
2005-07-07 3:44 ` corey taylor
2005-07-07 4:16 ` Neo Anderson
0 siblings, 2 replies; 10+ messages in thread
From: Jonathan Turkanis @ 2005-07-07 3:40 UTC (permalink / raw)
To: gcc-help
Neo Anderson wrote:
> I don't even think it's a problem. Why do I need (or better have) a line
> ending?
The C++ standard says: If a source file that is not empty does not end in a
newline character, or ends in a newline character immediately preceded by a
backslash character, the behavior is undefined. (2.1/1)
Jonathan
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: What is the purpose of 'warning: no newline at end of file'?
2005-07-07 3:40 ` Jonathan Turkanis
@ 2005-07-07 3:44 ` corey taylor
2005-07-07 4:16 ` Neo Anderson
1 sibling, 0 replies; 10+ messages in thread
From: corey taylor @ 2005-07-07 3:44 UTC (permalink / raw)
To: Jonathan Turkanis; +Cc: gcc-help
And that undefined behavior is in the form of that warning you've
posted. This simply lets you know what behavior the gcc developers
inserted.
You need the newline in order to have c++ standards behavior assumed
instead of gcc behavior -- it's a portability issue really.
corey
On 7/6/05, Jonathan Turkanis <technews@kangaroologic.com> wrote:
> Neo Anderson wrote:
> > I don't even think it's a problem. Why do I need (or better have) a line
> > ending?
>
> The C++ standard says: If a source file that is not empty does not end in a
> newline character, or ends in a newline character immediately preceded by a
> backslash character, the behavior is undefined. (2.1/1)
>
> Jonathan
>
>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: What is the purpose of 'warning: no newline at end of file'?
2005-07-07 3:40 ` Jonathan Turkanis
2005-07-07 3:44 ` corey taylor
@ 2005-07-07 4:16 ` Neo Anderson
2005-07-07 4:32 ` Ian Lance Taylor
` (2 more replies)
1 sibling, 3 replies; 10+ messages in thread
From: Neo Anderson @ 2005-07-07 4:16 UTC (permalink / raw)
To: gcc-help
So, what is the purpose of this warning? What possible 'damages' does this
warning protect against?
And, what is the 'the behavior'?
----Original Message Follows----
From: Jonathan Turkanis <technews@kangaroologic.com>
To: gcc-help@gcc.gnu.org
Subject: Re: What is the purpose of 'warning: no newline at end of file'?
Date: Wed, 06 Jul 2005 21:41:20 -0600
Neo Anderson wrote:
>I don't even think it's a problem. Why do I need (or better have) a line
>ending?
The C++ standard says: If a source file that is not empty does not end in a
newline character, or ends in a newline character immediately preceded by a
backslash character, the behavior is undefined. (2.1/1)
Jonathan
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: What is the purpose of 'warning: no newline at end of file'?
2005-07-07 4:16 ` Neo Anderson
@ 2005-07-07 4:32 ` Ian Lance Taylor
2005-07-07 4:39 ` Jonathan Turkanis
2005-07-07 11:35 ` Eljay Love-Jensen
2 siblings, 0 replies; 10+ messages in thread
From: Ian Lance Taylor @ 2005-07-07 4:32 UTC (permalink / raw)
To: Neo Anderson; +Cc: gcc-help
"Neo Anderson" <neo_in_matrix@msn.com> writes:
> So, what is the purpose of this warning? What possible 'damages' does
> this warning protect against?
None. Personally, I think the compiler should only issue this warning
with -pedantic.
> And, what is the 'the behavior'?
In this quote:
> > The C++ standard says: If a source file that is not empty does not end
> > in a newline character, or ends in a newline character immediately
> > preceded by a backslash character, the behavior is undefined. (2.1/1)
"the behavior" refers to the behavior of the compiler. It means that
the standard does not specify how the compiler must behave when it
sees a non-empty file which does not end with a newline.
Ian
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: What is the purpose of 'warning: no newline at end of file'?
2005-07-07 4:16 ` Neo Anderson
2005-07-07 4:32 ` Ian Lance Taylor
@ 2005-07-07 4:39 ` Jonathan Turkanis
2005-07-07 14:54 ` Neo Anderson
2005-07-07 11:35 ` Eljay Love-Jensen
2 siblings, 1 reply; 10+ messages in thread
From: Jonathan Turkanis @ 2005-07-07 4:39 UTC (permalink / raw)
To: gcc-help
[Sorry Neo, I think I sent you personal email accidentally]
Neo Anderson wrote:
> So, what is the purpose of this warning? What possible 'damages' does this
warning protect against?
I believe this language was added to the standard because at the time some
systems were not able to handle files properly if they didn't end in a newline.
This wording made it possible to provide conforming C++ implementations for
those platforms.
I'm not sure if there still are any such systems, but because the standard has
given implementations to freedom to do whatever they want (that's what undefined
behavior means) if you tell them to process a file not ending in a newline, be
warned that if you try to compile your code on another system, the compiler may
refuse. I know, for example, that Comeau in strict mode won't compile it. For
that matter, neither will gcc with -pedantic-errors.
Jonathan
> And, what is the 'the behavior'?
>
> ----Original Message Follows----
> From: Jonathan Turkanis <technews@kangaroologic.com>
> To: gcc-help@gcc.gnu.org
> Subject: Re: What is the purpose of 'warning: no newline at end of file'?
> Date: Wed, 06 Jul 2005 21:41:20 -0600
>
> Neo Anderson wrote:
>
>> I don't even think it's a problem. Why do I need (or better have) a line ending?
>
>
>
> The C++ standard says: If a source file that is not empty does not end in a
newline character, or ends in a newline character immediately preceded by a
backslash character, the behavior is undefined. (2.1/1)
>
> Jonathan
>
>
>
>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: What is the purpose of 'warning: no newline at end of file'?
2005-07-07 4:16 ` Neo Anderson
2005-07-07 4:32 ` Ian Lance Taylor
2005-07-07 4:39 ` Jonathan Turkanis
@ 2005-07-07 11:35 ` Eljay Love-Jensen
2005-07-07 14:41 ` Neo Anderson
2 siblings, 1 reply; 10+ messages in thread
From: Eljay Love-Jensen @ 2005-07-07 11:35 UTC (permalink / raw)
To: Neo Anderson, gcc-help
Hi Neo,
--- Foo.h ---
#ifndef Foo_H_ONCE
#define Foo_H_ONCE
extern int MyFoo;
#endif // Foo_H_ONCE<NO-NEWLINE>
--- --- ---
The "<NO-NEWLINE>" is a meta to indicate that there is no newline at the end of the file.
--- Foo.cpp ---
#include "Foo.h"
#include "Bar.h"
...yada yada yada...
--- --- ---
Is Bar.h supposed to be included? Or is the comment-to-end-of-line at the end of Foo.h supposed to comment it out?
The behavior is undefined.
HTH,
--Eljay
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: What is the purpose of 'warning: no newline at end of file'?
2005-07-07 11:35 ` Eljay Love-Jensen
@ 2005-07-07 14:41 ` Neo Anderson
2005-07-07 15:23 ` Eljay Love-Jensen
0 siblings, 1 reply; 10+ messages in thread
From: Neo Anderson @ 2005-07-07 14:41 UTC (permalink / raw)
To: gcc-help
#include "Foo.h"
There is already a newline after it. What does the Standard say?
----Original Message Follows----
From: Eljay Love-Jensen <eljay@adobe.com>
To: Neo Anderson <neo_in_matrix@msn.com>, gcc-help@gcc.gnu.org
Subject: Re: What is the purpose of 'warning: no newline at end of file'?
Date: Thu, 07 Jul 2005 06:38:09 -0500
Hi Neo,
--- Foo.h ---
#ifndef Foo_H_ONCE
#define Foo_H_ONCE
extern int MyFoo;
#endif // Foo_H_ONCE<NO-NEWLINE>
--- --- ---
The "<NO-NEWLINE>" is a meta to indicate that there is no newline at the end
of the file.
--- Foo.cpp ---
#include "Foo.h"
#include "Bar.h"
...yada yada yada...
--- --- ---
Is Bar.h supposed to be included? Or is the comment-to-end-of-line at the
end of Foo.h supposed to comment it out?
The behavior is undefined.
HTH,
--Eljay
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: What is the purpose of 'warning: no newline at end of file'?
2005-07-07 4:39 ` Jonathan Turkanis
@ 2005-07-07 14:54 ` Neo Anderson
0 siblings, 0 replies; 10+ messages in thread
From: Neo Anderson @ 2005-07-07 14:54 UTC (permalink / raw)
To: gcc-help
Thanks, that makes things much clearer for me.
----Original Message Follows----
From: Jonathan Turkanis <technews@kangaroologic.com>
To: gcc-help@gcc.gnu.org
Subject: Re: What is the purpose of 'warning: no newline at end of file'?
Date: Wed, 06 Jul 2005 22:40:28 -0600
[Sorry Neo, I think I sent you personal email accidentally]
Neo Anderson wrote:
> So, what is the purpose of this warning? What possible 'damages' does
this warning protect against?
I believe this language was added to the standard because at the time some
systems were not able to handle files properly if they didn't end in a
newline. This wording made it possible to provide conforming C++
implementations for those platforms.
I'm not sure if there still are any such systems, but because the standard
has given implementations to freedom to do whatever they want (that's what
undefined behavior means) if you tell them to process a file not ending in a
newline, be warned that if you try to compile your code on another system,
the compiler may refuse. I know, for example, that Comeau in strict mode
won't compile it. For that matter, neither will gcc with -pedantic-errors.
Jonathan
> And, what is the 'the behavior'?
>
> ----Original Message Follows----
> From: Jonathan Turkanis <technews@kangaroologic.com>
> To: gcc-help@gcc.gnu.org
> Subject: Re: What is the purpose of 'warning: no newline at end of file'?
> Date: Wed, 06 Jul 2005 21:41:20 -0600
>
> Neo Anderson wrote:
>
>> I don't even think it's a problem. Why do I need (or better have) a line
ending?
>
>
>
> The C++ standard says: If a source file that is not empty does not end in
a newline character, or ends in a newline character immediately preceded by
a backslash character, the behavior is undefined. (2.1/1)
>
> Jonathan
>
>
>
>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: What is the purpose of 'warning: no newline at end of file'?
2005-07-07 14:41 ` Neo Anderson
@ 2005-07-07 15:23 ` Eljay Love-Jensen
0 siblings, 0 replies; 10+ messages in thread
From: Eljay Love-Jensen @ 2005-07-07 15:23 UTC (permalink / raw)
To: Neo Anderson, gcc-help
Hi Neo,
>#include "Foo.h"
>There is already a newline after it. What does the Standard say?
The standard says that if you do not put in a newline at the end of Foo.h, the behavior is undefined.
The preprocessor directive #include "Foo.h" *includes* the newline at end-of-line.
No preprocessor that I know of puts in EXTRA newlines when it expands the preprocessor directives. Putting in an EXTRA newline when the included file lacks one at the end-of-file is compiler specific (enhancement to standard) behavior.
Sincerely,
--Eljay
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2005-07-07 15:23 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-07-07 3:34 What is the purpose of 'warning: no newline at end of file'? Neo Anderson
2005-07-07 3:40 ` Jonathan Turkanis
2005-07-07 3:44 ` corey taylor
2005-07-07 4:16 ` Neo Anderson
2005-07-07 4:32 ` Ian Lance Taylor
2005-07-07 4:39 ` Jonathan Turkanis
2005-07-07 14:54 ` Neo Anderson
2005-07-07 11:35 ` Eljay Love-Jensen
2005-07-07 14:41 ` Neo Anderson
2005-07-07 15:23 ` Eljay Love-Jensen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).