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