Re: C23 auto x C++ auto.

Liste des GroupesRevenir à l c 
Sujet : Re: C23 auto x C++ auto.
De : david.brown (at) *nospam* hesbynett.no (David Brown)
Groupes : comp.lang.c
Date : 26. May 2024, 18:10:32
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <v2vmto$3ffl2$1@dont-email.me>
References : 1 2
User-Agent : Mozilla Thunderbird
On 26/05/2024 16:22, Bonita Montero wrote:
Am 26.05.2024 um 15:49 schrieb Thiago Adams:
I think most people is not aware of this:
>
 From 3096 C23 draft
>
"
6.7.9 Type inference
...
  2 For such a declaration that is the definition of an object the init-    declarator shall have the form
>
    direct-declarator = assignment-expression
"
>
Basically "direct-declarator" differs from "declarator" because it does not contains pointer.
>
Then the type inference using auto and pointer is something undefined in C23.
>
struct node{
     struct node * next;
>
};
int main(){
    struct node node = {};
    auto * p = node.next;
}
>
<source>:7:4: error: 'auto' requires a plain identifier, possibly with attributes, as declarator
     7 |    auto * p = node.next;
       |    ^~~~
>
This differs from C++.
>
>
 I don't know what type inference in C is good for since the type names
in C are usually short. If I have short typenames in C++ I don't use
type inference. Type-inference makes sense to make such things shorter
     typename map<string, string>::const_iterator it = map.cbegin();
This doesn't happen in C.
 
"typeof" and "auto" have been available forever as gcc extensions (where "auto" was spelt "__auto_type", since of course "auto" had another meaning in C until C23).  One use-case for C is in macros that handle multiple types, but I expect people have done other things with them too.
It would have been nice to see statement expressions included in C23, as they have been in gcc for ages:
#define max(a,b) \
   ({ __auto_type _a = (a); \
       __auto_type _b = (b); \
     _a > _b ? _a : _b; })
In general, it's just another tool that could be useful in writing code that's a bit more flexible.

Date Sujet#  Auteur
26 May 24 * C23 auto x C++ auto.16Thiago Adams
26 May 24 +* Re: C23 auto x C++ auto.11Bonita Montero
26 May 24 i+* Re: C23 auto x C++ auto.8David Brown
26 May 24 ii+- Re: C23 auto x C++ auto.1Bonita Montero
26 May 24 ii+* Re: C23 auto x C++ auto.3Thiago Adams
27 May 24 iii+- Re: C23 auto x C++ auto.1David Brown
7 Jun 24 iii`- Re: C23 auto x C++ auto.1Lawrence D'Oliveiro
27 May 24 ii`* Re: C23 auto x C++ auto.3Blue-Maned_Hawk
27 May 24 ii `* Re: C23 auto x C++ auto.2David Brown
7 Jun 24 ii  `- Re: C23 auto x C++ auto.1Lawrence D'Oliveiro
27 May 24 i`* Re: C23 auto x C++ auto.2Blue-Maned_Hawk
27 May 24 i `- Re: C23 auto x C++ auto.1Bonita Montero
26 May 24 +* Re: C23 auto x C++ auto.3Michael S
26 May 24 i`* Re: C23 auto x C++ auto.2Thiago Adams
26 May 24 i `- Re: C23 auto x C++ auto.1Thiago Adams
27 May 24 `- Different languages (off-topic in CLC) (Was: C23 auto x C++ auto.)1Kenny McCormack

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal