bison-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 5/5] style: don't use std::endl


From: Hans Åberg
Subject: Re: [PATCH 5/5] style: don't use std::endl
Date: Thu, 10 May 2018 15:07:39 +0200

> On 10 May 2018, at 14:58, Akim Demaille <address@hidden> wrote:
> 
>> Le 10 mai 2018 à 14:01, Hans Åberg <address@hidden> a écrit :
>> 
>>> On 9 May 2018, at 08:18, Akim Demaille <address@hidden> wrote:
>>> 
>>>> Le 8 mai 2018 à 18:03, Hans Åberg <address@hidden> a écrit :
>>>> 
>>>> 
>>>>> On 8 May 2018, at 17:02, Akim Demaille <address@hidden> wrote:
>>>>> 
>>>>> Don't use std::endl, it flushes uselessly, and is considered bad
>>>>> style.
>>>> 
>>>> Flushing is good with debugging and error reporting, though.
>>> 
>>> I agree, but in that case an explicit `flush()` is better.
>>> And in the case of Bison, I don’t think we need any.
>>> 
>>> Besides, stdout is typically line buffered when connected to a terminal,
>>> and stderr is typically unbuffered.
>> 
>> I can see this difference when throwing an uncaught exception: std::cerr is 
>> output before the exception reporting, whereas std::cout after, when the 
>> buffers are flushed in connection with program termination.
> 
> Of course one can see differences in arbitrary programs.  The
> question is whether my changes change something for users.  Do
> you have an actual example?

For the std::cerr cases, if unbuffered, your changes will make no difference, I 
gather, but I recall in my code in the past that when debugging in an 
interactive debugger, one must be careful to flush. Then a problem with the 
Bison files is that they are automatically written, so it can be a bother 
trying to change it by hand.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]