Re: on allowing "int a" definition everywhere

Liste des GroupesRevenir à l c 
Sujet : Re: on allowing "int a" definition everywhere
De : Keith.S.Thompson+u (at) *nospam* gmail.com (Keith Thompson)
Groupes : comp.lang.c
Date : 22. Aug 2024, 20:12:54
Autres entêtes
Organisation : None to speak of
Message-ID : <87cym0h1eh.fsf@nosuchdomain.example.com>
References : 1 2 3 4 5 6 7
User-Agent : Gnus/5.13 (Gnus v5.13)
Ben Bacarisse <ben@bsb.me.uk> writes:
Keith Thompson <Keith.S.Thompson+u@gmail.com> writes:
The original code:
>
    if (FILE* f = fopen("file.txt", "r"))
>
I think the proposal would be a declaration to precede an expression:
>
  if (FILE* f = fopen("file.txt", "r"); f)

I don't think so, or at least I don't think it's only that.

In C++17, the syntax for an if statement is (leaving some stuff out):

    if ( init-statement[opt] condition ) statement

where an init-statement is an expression statement or a simple
declaration (which includes a trailing semicolon), and a condition is an
expression or a declarator with an initialization.  So these are
equivalent in C++:

    if (FILE* f = fopen("file.txt", "r"))
    if (FILE* f = fopen("file.txt", "r"); f)

    {
       /*...*/ fclose(f);
    }
>
doesn't allow for taking some non-trivial action of the fopen() call
fails, but if a declaration in an if condition is visible in the else
clause, you could write something like:
>
    if (FILE* f = fopen("file.txt", "r")) {
       /*...*/
       fclose(f);
    }
    else {
        perror("file.txt");
        exit(EXIT_FAILURE); // or try something else
    }
>
What's the significance of the declared name being in scope in the else
clause here?

My brain seems to have taken a detour while I was writing that.

fopen() returns either a valid pointer or NULL; if it fails, there's no
extra information in the pointer itself.  But if a function's result on
failure includes information about how it failed, accessing the value in
the else clause is useful.  (And C++ supports this.)

--
Keith Thompson (The_Other_Keith) Keith.S.Thompson+u@gmail.com
void Void(void) { Void(); } /* The recursive call of the void */

Date Sujet#  Auteur
20 Aug 24 * on allowing "int a" definition everywhere62fir
20 Aug 24 +* Re: on allowing "int a" definition everywhere24Thiago Adams
20 Aug 24 i+* Re: on allowing "int a" definition everywhere4fir
20 Aug 24 ii+- Re: on allowing "int a" definition everywhere1fir
20 Aug 24 ii`* Re: on allowing "int a" definition everywhere2Thiago Adams
20 Aug 24 ii `- Re: on allowing "int a" definition everywhere1fir
21 Aug 24 i`* Re: on allowing "int a" definition everywhere19Blue-Maned_Hawk
21 Aug 24 i `* Re: on allowing "int a" definition everywhere18Thiago Adams
21 Aug 24 i  +* Re: on allowing "int a" definition everywhere4Bart
21 Aug 24 i  i`* Re: on allowing "int a" definition everywhere3Thiago Adams
21 Aug 24 i  i `* Re: on allowing "int a" definition everywhere2Michael S
21 Aug 24 i  i  `- Re: on allowing "int a" definition everywhere1Thiago Adams
22 Aug 24 i  `* Re: on allowing "int a" definition everywhere13Blue-Maned_Hawk
22 Aug 24 i   +* Re: on allowing "int a" definition everywhere5Keith Thompson
22 Aug 24 i   i`* Re: on allowing "int a" definition everywhere4Ben Bacarisse
22 Aug 24 i   i +- Re: on allowing "int a" definition everywhere1Keith Thompson
22 Aug 24 i   i `* Re: on allowing "int a" definition everywhere2Kaz Kylheku
23 Aug 24 i   i  `- Re: on allowing "int a" definition everywhere1Ben Bacarisse
22 Aug 24 i   `* Re: on allowing "int a" definition everywhere7Bart
22 Aug 24 i    +* Re: on allowing "int a" definition everywhere2Thiago Adams
22 Aug 24 i    i`- Re: on allowing "int a" definition everywhere1Blue-Maned_Hawk
23 Aug 24 i    `* Re: on allowing "int a" definition everywhere4fir
23 Aug 24 i     `* Re: on allowing "int a" definition everywhere3Bart
23 Aug 24 i      `* Re: on allowing "int a" definition everywhere2fir
23 Aug 24 i       `- Re: on allowing "int a" definition everywhere1fir
21 Aug 24 `* Re: on allowing "int a" definition everywhere37Lawrence D'Oliveiro
21 Aug 24  +* Re: on allowing "int a" definition everywhere2Ben Bacarisse
21 Aug 24  i`- Re: on allowing "int a" definition everywhere1Ben Bacarisse
25 Aug 24  `* Re: on allowing "int a" definition everywhere34fir
27 Aug 24   `* Re: on allowing "int a" definition everywhere33Lawrence D'Oliveiro
27 Aug 24    +* Re: on allowing "int a" definition everywhere21fir
27 Aug 24    i`* Re: on allowing "int a" definition everywhere20fir
27 Aug 24    i `* Re: on allowing "int a" definition everywhere19fir
27 Aug 24    i  +* Re: on allowing "int a" definition everywhere3fir
27 Aug 24    i  i`* Re: on allowing "int a" definition everywhere2fir
27 Aug 24    i  i `- Re: on allowing "int a" definition everywhere1fir
27 Aug 24    i  `* Re: on allowing "int a" definition everywhere15fir
27 Aug 24    i   +* Re: on allowing "int a" definition everywhere13fir
27 Aug 24    i   i+* Re: on allowing "int a" definition everywhere9Bart
27 Aug 24    i   ii+* Re: on allowing "int a" definition everywhere3fir
27 Aug 24    i   iii`* Re: on allowing "int a" definition everywhere2fir
27 Aug 24    i   iii `- Re: on allowing "int a" definition everywhere1fir
2 Sep 24    i   ii`* Re: on allowing "int a" definition everywhere5Lawrence D'Oliveiro
2 Sep 24    i   ii `* Re: on allowing "int a" definition everywhere4Bart
3 Sep 24    i   ii  `* Re: on allowing "int a" definition everywhere3Lawrence D'Oliveiro
3 Sep 24    i   ii   +- Re: on allowing "int a" definition everywhere1Kaz Kylheku
3 Sep 24    i   ii   `- Re: on allowing "int a" definition everywhere1Michael S
27 Aug 24    i   i`* Re: on allowing "int a" definition everywhere3fir
29 Aug 24    i   i `* Re: on allowing "int a" definition everywhere2fir
29 Aug 24    i   i  `- Re: on allowing "int a" definition everywhere1fir
3 Sep 24    i   `- Re: on allowing "int a" definition everywhere1Lawrence D'Oliveiro
27 Aug 24    `* Re: on allowing "int a" definition everywhere11Blue-Maned_Hawk
28 Aug 24     `* Re: on allowing "int a" definition everywhere10Tim Rentsch
28 Aug 24      `* Re: on allowing "int a" definition everywhere9Keith Thompson
28 Aug 24       +* Re: on allowing "int a" definition everywhere2Ben Bacarisse
28 Aug 24       i`- Re: on allowing "int a" definition everywhere1Tim Rentsch
28 Aug 24       +* Re: on allowing "int a" definition everywhere2Tim Rentsch
28 Aug 24       i`- Re: on allowing "int a" definition everywhere1Keith Thompson
28 Aug 24       `* Re: on allowing "int a" definition everywhere4Tim Rentsch
28 Aug 24        +- Re: on allowing "int a" definition everywhere1David Brown
28 Aug 24        +- Re: on allowing "int a" definition everywhere1James Kuyper
28 Aug 24        `- Re: on allowing "int a" definition everywhere1Keith Thompson

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal