Deutsch   English   Français   Italiano  
<vr1fks$1frcd$2@dont-email.me>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail
From: Richard Heathfield <rjh@cpax.org.uk>
Newsgroups: comp.theory
Subject: Re: Every sufficiently competent C programmer knows --- Semantic
 Property of Finite String
Date: Fri, 14 Mar 2025 14:49:00 +0000
Organization: Fix this later
Lines: 56
Message-ID: <vr1fks$1frcd$2@dont-email.me>
References: <vqntaq$1jut5$1@dont-email.me> <vqp388$1tvqa$1@dont-email.me>
 <vqpdv9$202b2$2@dont-email.me> <vqperb$20c9k$2@dont-email.me>
 <E6mcnWv3nMa66036nZ2dnZfqnPWdnZ2d@brightview.co.uk>
 <vqs2n8$2knng$1@dont-email.me>
 <5429f6c8b8a8a79e06b4aeefe677cc54a2a636bf@i2pn2.org>
 <vqt9jp$2spcd$6@dont-email.me> <vqtag4$2t2hb$2@dont-email.me>
 <vqtgl0$2u7fo$1@dont-email.me>
 <924e22fc46d629b311b16a954dd0bed980a0a094@i2pn2.org>
 <vqvg7s$3s1qt$3@dont-email.me> <vqvgb4$3kfru$5@dont-email.me>
 <vqvi94$3tk5h$1@dont-email.me> <vr01sq$9741$1@dont-email.me>
 <033b052fccc451753d03d559358b9f1d2fd6623b@i2pn2.org>
 <vr09bm$ehgd$3@dont-email.me>
 <47992d436edb4414b8fa8fa99688e25e22f3098e@i2pn2.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Fri, 14 Mar 2025 15:49:05 +0100 (CET)
Injection-Info: dont-email.me; posting-host="5fc3e144d8b4428c522cf2161043773b";
	logging-data="1568141"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX1+El1hNu90v48raPS1SEBJls76CXM264ak8jQ9+WWdFHg=="
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:Zqu6d7BHQw2NEUM8Xr5YfjymJ7k=
In-Reply-To: <47992d436edb4414b8fa8fa99688e25e22f3098e@i2pn2.org>
Content-Language: en-GB
Bytes: 3542

On 14/03/2025 14:10, Richard Damon wrote:
> On 3/13/25 11:55 PM, olcott wrote:

<snip>

>> In other words you are stupidly trying
>> to get away with saying that it is impossible
>> for one C function to call another C function.
>>
> 
> Not at all, just that for a C function to call another C function 
> that other C function must be included as part of the Program 
> that the first is defined in.

This is an easy area for ambiguity. In this code:

int bar(void);
int foo(void)
{
   return bar();
}

bar() is not included, merely prototyped, but it is reasonable to 
say that foo() is (syntactically) calling bar(). It is /not/ 
reasonable, though, to claim that we know what foo() will do 
unless we know for sure what bar() does. And neither is it 
possible for foo()'s program to run if bar()'s source is not in 
the module and cannot be tracked down elsewhere by the linker.

The absence of bar() from ready availability does not mean that 
foo() isn't calling bar(). It only means that bar() might not be 
around to hear.

As is so often the case, whether we're right to claim X depends 
on what we mean by X.

> C functions are not programs, but programs can be built from C 
> functions,

True, although I think one would have to be pretty tight to 
insist on the distinction in this case.

If we can think of C functions as programs, we don't need to 
emulate anything at all (not that we did, of course); we can just 
call the function and catch its return vale (if any).

> That is like asking what is the frequency of a square?

I have it on good authority that squares broadcast on 4Hz.

-- 
Richard Heathfield
Email: rjh at cpax dot org dot uk
"Usenet is a strange place" - dmr 29 July 1999
Sig line 4 vacant - apply within