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: Sun, 29 Oct 2023 05:47:14 -0700
Organization: A noiseless patient Spider
Lines: 45
Message-ID: <86msw11tpp.fsf@linuxsc.com>
References: <20230922081706.858@kylheku.com> <87zg1et4wv.fsf@nosuchdomain.example.com> <86jzs3de3h.fsf@linuxsc.com> <87h6n7tkv4.fsf@nosuchdomain.example.com> <86ttqf2w6p.fsf@linuxsc.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Injection-Info: dont-email.me; posting-host="8287b7f320df8d3a443ae94f1f0ba80f"; logging-data="4078521"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18C3/vJ1fDydhwiTNCHdwkF50zUR+WnqYM="
User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.4 (gnu/linux)
Cancel-Lock: sha1:7mQmZbnW9k8vUUfg88HJfXAcnEk= sha1:qGpTq28vsV1qNBPh9BGcpuLRjQQ=
Xref: csiph.com comp.lang.c:379356
James Kuyper writes:
> On 10/24/23 8:54 PM, Tim Rentsch wrote:
>
>> 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?
>
> [...]
>
> The standard never talks about rejection. It requires that "A
> conforming hosted implementation shall accept any strictly
> conforming program.". No such requirement applies to any program
> which is not strictly conforming. (4p6)
Perhaps I shouldn't have used the word "reject". If the question
were phrased "Does the C standard allow an implementation not to
accept any program that is not strictly conforming?", does your
comment above mean you would say Yes to that question?