Warning: mysqli::__construct(): (HY000/1203): User howardkn already has more than 'max_user_connections' active connections in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\includes\artfuncs.php on line 21
Failed to connect to MySQL: (1203) User howardkn already has more than 'max_user_connections' active connections
Warning: mysqli::query(): Couldn't fetch mysqli in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\index.php on line 66
Article <va727r$d1jq$1@dont-email.me>
Deutsch   English   Français   Italiano  
<va727r$d1jq$1@dont-email.me>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: Bart <bc@freeuk.com>
Newsgroups: comp.lang.c
Subject: Re: on allowing "int a" definition everywhere
Date: Thu, 22 Aug 2024 11:00:28 +0100
Organization: A noiseless patient Spider
Lines: 76
Message-ID: <va727r$d1jq$1@dont-email.me>
References: <afdfe7c37c6ad739fd82c7ec0587b82e0963fce2@i2pn2.org>
 <va2i90$3f4dg$1@dont-email.me>
 <pan$8a32c$1fb86219$8ea0c6ae$7c2d1765@invalid.invalid>
 <va4id0$3rc3n$1@dont-email.me>
 <pan$2be2c$5ea44d54$282eec3$b0bcf030@invalid.invalid>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Thu, 22 Aug 2024 12:00:28 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="546f7a36e4e459fbaf8d49cd6ca25442";
	logging-data="427642"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX1/Yrvo7N31YGdujFEy5/OSE"
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:tQUDCVOHw7IRuIuYbQVeR6TNHfY=
In-Reply-To: <pan$2be2c$5ea44d54$282eec3$b0bcf030@invalid.invalid>
Content-Language: en-GB
Bytes: 3221

On 22/08/2024 09:40, Blue-Maned_Hawk wrote:
> Thiago Adams wrote:
> 
>> On 21/08/2024 01:42, Blue-Maned_Hawk wrote:
>>> Thiago Adams wrote:
>>>
>>>> initializer inside if is already in C++, and it will probably be on
>>>> C2Y.
>>> If it's for consistency with how for loops permit declarations, i would
>>> _much_  prefer that they just outlaw that to induce consistency.
>>>
>>> (Really, i'd ideally want things to just stay as they are, since
>>> declarations in for loops are simply too useful for macros.)
>>
>> I like the ability to declare things inside if.
>>
>> if (FILE* f = fopen("file.txt", "r"))
>> {
>>     /*...*/ fclose(f);
>> }
>>
>> Because it makes the scope of f, associated with the pointed object
>> lifetime.
>>
>> For instance, if you try to use f
>>
>> if (FILE* f = fopen("file.txt", "r"))
>> {
>>     /*...*/ fclose(f);
>> }
>> fwrite(f, ..) ;// ERROR
> 
> You can already do that in C23:
> 
> if (…) {
> 	FILE * f = fopen("file.txt", "r");
> 	/* … */
> 	fclose(f);
> }
> fwrite(f, …);  /* Some kind of error happens. */
> 
> Or, if you need it to exist before the controlling expression:
> 
> for (bool x = true; x; x = false)  for (FILE * f = fopen("file.txt", "r");
> x; x = false)  if (…) {
> 	/* … */
> 	fclose(f);
> }
> fwrite(f, …);
> 

I wonder, if I laid it out it properly:

     for (bool x = true; x; x = false)
         for (FILE * f = fopen("file.txt", "r"); x; x = false)
             if (…) {
                 /* … */
                 fclose(f);
             }
     fwrite(f, …);

Nope; I still haven't the faintest idea what this is supposed to do. I 
suspect that it doesn't actually run or need those two nested loops.

I assume the (...) tests the value of 'f'? If so then perhaps this is a 
shorter way of expressing the same thing:

     {
         FILE * f = fopen("file.txt", "r");
         if (f) {
             /* … */
             fclose(f);
         }
     }
     fwrite(f, …);