Re: Casting the return value of ...

Liste des GroupesRevenir à cl c 
Sujet : Re: Casting the return value of ...
De : chris.m.thomasson.1 (at) *nospam* gmail.com (Chris M. Thomasson)
Groupes : comp.lang.c
Date : 28. Mar 2024, 23:15:54
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <uu4mma$3qdco$1@dont-email.me>
References : 1 2 3 4 5
User-Agent : Mozilla Thunderbird
On 3/28/2024 2:07 PM, Keith Thompson wrote:
bart <bc@freeuk.com> writes:
On 28/03/2024 19:38, Keith Thompson wrote:
Kaz Kylheku <433-929-6894@kylheku.com> writes:
[...]
Conversions between function pointers and data pointers are an
extension; it is not well-defined behavior in ISO C.
>
Therefore we can neither say that ISO C doesn't require a cast there (it
imposes no requirements at all), nor that the conversion is fine with a
cast.
>
The cast is /likely/ necessary, in order to correctly trigger the
extension.
ISO C does require a cast.  The cast is necessary to avoid a
constraint violation and a mandatory diagnostic.  The resulting
behavior is undefined in ISO C, but defined by POSIX.  Assigning a
void* value to a pointer-to-function object without a cast violates
the constraint for simple assignment (N1570 6.5.16.1p1).
>
What would such a cast look like? Since this gives a warning with
-Wpedantic even with a cast:
>
     void* p;
     void(*q)(void);
>
     p=(void*)q;
     q=(void(*)(void))p;
 The warnings I get from gcc are:
 warning: ISO C forbids conversion of function pointer to object pointer type [-Wpedantic]
warning: ISO C forbids conversion of object pointer to function pointer type [-Wpedantic]
 With -pedantic-errors, these become fatal errors.
 I disagree with gcc.  ISO C doesn't define the behavior, but it doesn't
forbid the conversion.  (Anyone who disagrees is invited to cite the
constraint that it violates.)
 Note that clang doesn't issue this diagnostic.
 
Casting might prevent a warning in certain compilers...

Date Sujet#  Auteur
28 Mar 24 * Casting the return value of ...31Kenny McCormack
28 Mar 24 +* Re: Casting the return value of ...27Kaz Kylheku
28 Mar 24 i+* Re: Casting the return value of ...20Keith Thompson
28 Mar 24 ii`* Re: Casting the return value of ...19bart
28 Mar 24 ii +* Re: Casting the return value of ...12Keith Thompson
28 Mar 24 ii i+- Re: Casting the return value of ...1Chris M. Thomasson
28 Mar 24 ii i+* Re: Casting the return value of ...8Kaz Kylheku
29 Mar 24 ii ii+* Re: Casting the return value of ...5Kaz Kylheku
29 Mar 24 ii iii`* Re: Casting the return value of ...4Kaz Kylheku
29 Mar 24 ii iii `* Re: Casting the return value of ...3Michael S
29 Mar 24 ii iii  `* gcc Bugzilla search (was: Casting the return value of ...)2Michael S
29 Mar 24 ii iii   `- Re: gcc Bugzilla search1David Brown
29 Mar 24 ii ii+- Re: Casting the return value of ...1Keith Thompson
8 Jun 24 ii ii`- Re: Casting the return value of ...1Tim Rentsch
29 Mar 24 ii i`* Re: Casting the return value of ...2David Brown
30 Mar 24 ii i `- Re: Casting the return value of ...1Chris M. Thomasson
29 Mar 24 ii `* Re: Casting the return value of ...6David Brown
29 Mar 24 ii  `* Re: Casting the return value of ...5bart
29 Mar 24 ii   +- Re: Casting the return value of ...1David Brown
30 Mar 24 ii   `* Re: Casting the return value of ...3Tim Rentsch
30 Mar 24 ii    `* Re: Casting the return value of ...2bart
9 Apr 24 ii     `- Re: Casting the return value of ...1Tim Rentsch
30 Mar 24 i`* Re: Casting the return value of ...6Tim Rentsch
31 Mar 24 i +* Re: Casting the return value of ...3Lawrence D'Oliveiro
31 Mar 24 i i+- Re: Casting the return value of ...1David Brown
31 Mar 24 i i`- Re: Casting the return value of ...1Chris M. Thomasson
9 Apr 24 i `* Re: Casting the return value of ...2Tim Rentsch
9 Apr 24 i  `- Re: Casting the return value of ...1David Brown
29 Mar 24 +* Re: Casting the return value of ...2Andrey Tarasevich
29 Mar 24 i`- Re: Casting the return value of ...1Keith Thompson
30 Mar 24 `- Re: Casting the return value of ...1Tim Rentsch

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal