Joseph S. Myers wrote:
> On Wed, 29 Apr 2009, Manuel López-Ibáñez wrote:
>
>
>> 2009/4/29 Joseph S. Myers <[email protected]>:
>>
>>> On Wed, 29 Apr 2009, Ian Lance Taylor wrote:
>>>
>>>
>>>> * The C++ frontend warns about "while (true);" when there is no
>>>> whitespace between the ')' and the ';'. The C frontend does not. I'm
>>>> not sure how to best handle this. It doesn't make much sense to warn
>>>> about this with -Wc++-compat. Should the C frontend warn about this?
>>>> Should the C++ frontend not warn about this? Any opinions?
>>>>
>>> I consider this whitespace-sensitive warning very dubious.
>>>
>> So would you like it if it were not sensitive to whitespace?
>> (It could be silenced by while(true) (void)0;)
>>
>> I think the point is more whether the warning itself is useful or not.
>>
>
> I don't know the rationale for this warning. Is it to do with the C++0x
> specification that certain loops may be assumed to terminate?
>
I think the rationale is to capture this mistake:
for(...);
{
}
Microsoft's compiler has a similar warning, but stricter: it doesn't
care about whitespace, and the only way to get a warning-free empty loop
is to give it an empty compound statement as the body.
So MSC will warn about this construct, but GCC will not, due to its
whitespace rule:
for(...)
;
Sebastian