Path: csiph.com!news.mixmin.net!eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: Tim Rentsch
Newsgroups: comp.lang.c
Subject: Re: Call to a function
Date: Tue, 24 Oct 2023 20:54:54 -0700
Organization: A noiseless patient Spider
Lines: 29
Message-ID: <86ttqf2w6p.fsf@linuxsc.com>
References: <20230922081706.858@kylheku.com> <87zg1et4wv.fsf@nosuchdomain.example.com> <86jzs3de3h.fsf@linuxsc.com> <87h6n7tkv4.fsf@nosuchdomain.example.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Injection-Info: dont-email.me; posting-host="cf97bd7e9489cbbcf364cc78b48cedaf"; logging-data="541043"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19clx0E9smenPHZP/CHhBKAy16a5FFAMg8="
User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.4 (gnu/linux)
Cancel-Lock: sha1:uyzzGmv4siMPIW7n9xKsvvSBWCQ= sha1:OnEyTTR7nfMnXczzz47zV9p3pms=
Xref: csiph.com comp.lang.c:349688
Keith Thompson writes:
> Tim Rentsch writes:
> [...]
>
>> The point isn't quite the same. The C standard explicitly says
>> integers may be converted to any pointer type. The C standard
>> does not say that a pointer to an object type may be converted
>> to a pointer to function type. Every implementation is within
>> its rights to reject any program whose static text includes[*] a
>> cast from a pointer to an object type to a pointer to function
>> type, regardless of whether the cast has any chance of being
>> executed.
>>
>> [*] meaning, still present as source of any preprocessor
>> conditionals have been processed, etc.
>
> I disagree. (I think we've discussed this before.)
>
> Concretely, I believe that this program violates no syntax error
> or constraint. It includes code whose behavior would be undefined
> if it were executed, but the `if (0)` prevents that.
>
> On what basis do you think a conforming implementation may reject
> it?
First let me ask a question. Does the C standard allow an
implementation to reject any program that is not strictly
conforming?