Deutsch   English   Français   Italiano  
<20250423113224.711@kylheku.com>

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: Kaz Kylheku <643-408-1753@kylheku.com>
Newsgroups: comp.lang.c
Subject: Re: Loops (was Re: do { quit; } else { })
Date: Wed, 23 Apr 2025 18:43:33 -0000 (UTC)
Organization: A noiseless patient Spider
Lines: 34
Message-ID: <20250423113224.711@kylheku.com>
References: <vspbjh$8dvd$1@dont-email.me> <vu01k7$1bfv2$1@dont-email.me>
 <vu0720$1dva7$1@dont-email.me> <vu2hmg$3jn88$1@dont-email.me>
 <vu2mkc$3noft$1@dont-email.me> <vu38da$735n$1@dont-email.me>
 <vu3j7s$g755$1@dont-email.me> <87ecxmv4t4.fsf@nosuchdomain.example.com>
 <vu401g$reom$1@dont-email.me> <20250420200823.908@kylheku.com>
 <vu5bqp$230jl$2@dont-email.me> <20250421113640.839@kylheku.com>
 <vu67up$2ubvr$1@dont-email.me> <20250421125957.29@kylheku.com>
 <vu6kkt$392e6$1@dont-email.me> <vu6q3b$3jhq1$1@paganini.bofh.team>
 <vu7r19$da0o$1@dont-email.me> <20250422103555.547@kylheku.com>
 <vu8sm8$18fhc$2@dont-email.me> <vub14h$3d9kt$1@dont-email.me>
 <vub8rh$3kfla$1@dont-email.me>
Injection-Date: Wed, 23 Apr 2025 20:43:33 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="b9e700eedc213c4b464959b8c9b0f468";
	logging-data="3893524"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX1/0qWR7AZKzVQXEU9eIuwZBQZWIwv5vlzE="
User-Agent: slrn/pre1.0.4-9 (Linux)
Cancel-Lock: sha1:9nxP5o/p07HWfDqvaP1oIee8riA=
Bytes: 2809

On 2025-04-23, bart <bc@freeuk.com> wrote:
> On 23/04/2025 16:31, David Brown wrote:
>> On 22/04/2025 22:03, bart wrote:
>
>> Too few levels of functions and/or macros (there is no semantic 
>> difference between macros and functions in this matter)
>
> There is a great deal of difference. Functions tend to be well-formed in 
> their inputs and outputs.
>
> Macros take some abitrary blocks of syntax and return another arbitrary 
> block of syntax:
>
>      #define INDEX(a, b, y) a y b
>      INDEX(a, i, [) ];

While that's terrible, I've never seen anything like it in the wild.

Macros which open a brace, relying on the invocation of a paired
macro to close it, are reasonably common.

The macro we had been discussing whereby the for (..) part of
a loop is also an example of something which generates a syntactic
fragment, which must be completed by something which follows
the macro, namely a statement.

Speaking purely in terms of formal syntqx, this is exactly what is going
on in your example with the completing closing bracket. In that
situation, it gives us a useful technique whose use is clear.

-- 
TXR Programming Language: http://nongnu.org/txr
Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
Mastodon: @Kazinator@mstdn.ca