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?