Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #402647 > unrolled thread

Taming The Switch-Statement

Started byLawrence D’Oliveiro <ldo@nz.invalid>
First post2026-10-03 08:43 +0000
Last post2026-10-28 02:27 -0400
Articles 20 on this page of 635 — 29 participants

Back to article view | Back to comp.lang.c


Contents

  Taming The Switch-Statement Lawrence D’Oliveiro <ldo@nz.invalid> - 2026-10-03 08:43 +0000
    Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-03 11:24 +0100
      Re: Taming The Switch-Statement Kaz Kylheku <046-301-5902@kylheku.com> - 2026-10-05 22:15 +0000
    Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-03 14:22 +0200
    Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-03 18:02 +0200
      Re: Taming The Switch-Statement Johann 'Myrkraverk' Oskarsson <johann@myrkraverk.invalid> - 2026-10-04 00:24 +0800
      Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-03 17:36 +0100
        Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-03 16:31 -0700
          Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-04 10:23 +0200
          Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-04 12:18 +0100
          Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-04 16:20 +0200
            Re: Taming The Switch-Statement Kaz Kylheku <046-301-5902@kylheku.com> - 2026-10-05 21:34 +0000
              Re: Taming The Switch-Statement "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-10-06 16:04 -0700
        Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-04 16:18 +0200
          Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-04 16:09 +0100
            Re: Taming The Switch-Statement scott@slp53.sl.home (Scott Lurndal) - 2026-10-04 16:59 +0000
              Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-04 18:30 +0100
                Re: Taming The Switch-Statement Richard Harnden <richard.nospam@gmail.invalid> - 2026-10-04 19:49 +0100
                  Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-04 20:35 +0100
                    Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-04 22:27 +0200
                      Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-04 22:47 +0100
                  Re: Taming The Switch-Statement scott@slp53.sl.home (Scott Lurndal) - 2026-10-04 21:59 +0000
        Re: Taming The Switch-Statement antispam@fricas.org (Waldek Hebisch) - 2026-10-04 23:38 +0000
          Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-05 01:24 +0100
            Re: Taming The Switch-Statement Kaz Kylheku <046-301-5902@kylheku.com> - 2026-10-05 21:48 +0000
              Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-06 00:11 +0100
                Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-06 09:49 +0200
                  Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-06 11:12 +0200
                    Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-06 12:41 +0200
                      Re: Taming The Switch-Statement Richard Harnden <richard.nospam@gmail.invalid> - 2026-10-06 12:33 +0100
                        Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-06 15:16 +0100
                          Re: Taming The Switch-Statement scott@slp53.sl.home (Scott Lurndal) - 2026-10-06 14:37 +0000
                            Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-06 17:27 +0100
                              Re: Taming The Switch-Statement antispam@fricas.org (Waldek Hebisch) - 2026-10-06 23:14 +0000
                                Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-07 01:25 +0100
                                  Re: Taming The Switch-Statement antispam@fricas.org (Waldek Hebisch) - 2026-10-07 04:19 +0000
                                    Re: Taming The Switch-Statement Lawrence D’Oliveiro <ldo@nz.invalid> - 2026-10-07 06:28 +0000
                                      Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-07 11:39 +0100
                                        Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-07 12:57 +0200
                                    Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-07 11:32 +0100
                                      Re: Taming The Switch-Statement antispam@fricas.org (Waldek Hebisch) - 2026-10-07 15:10 +0000
                                        Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-07 19:41 +0100
                                          Re: Taming The Switch-Statement antispam@fricas.org (Waldek Hebisch) - 2026-10-08 04:49 +0000
                                            Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-08 12:24 +0100
                                  Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-07 09:07 +0200
                                    Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-07 11:49 +0100
                                      Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-07 13:11 +0200
                        Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-06 16:17 +0200
                          Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-06 15:32 +0100
                            Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-06 17:25 +0200
                          Re: Taming The Switch-Statement scott@slp53.sl.home (Scott Lurndal) - 2026-10-06 14:39 +0000
                            Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-06 19:48 +0200
                              Re: Taming The Switch-Statement scott@slp53.sl.home (Scott Lurndal) - 2026-10-06 18:12 +0000
                                [OT] substances (was Re: Taming The Switch-Statement) Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-06 21:50 +0200
                                Re: Taming The Switch-Statement "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-10-06 17:06 -0700
                      Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-06 19:25 +0200
                        Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-07 10:28 +0200
                          Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-07 15:16 +0200
                            Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-07 16:40 +0200
                            Re: Taming The Switch-Statement Tim Rentsch <tr.17687@z991.linuxsc.com> - 2026-10-08 07:24 -0700
                      Re: Taming The Switch-Statement "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-10-06 16:08 -0700
                        Re: Taming The Switch-Statement Lawrence D’Oliveiro <ldo@nz.invalid> - 2026-10-06 23:45 +0000
                          Re: Taming The Switch-Statement "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-10-06 17:08 -0700
                          Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-07 10:35 +0200
                            Re: Taming The Switch-Statement "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-10-26 20:53 -0700
                  Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-06 12:33 +0100
                    Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-06 17:16 +0200
                    Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-06 16:41 -0700
                Re: Taming The Switch-Statement tTh <tth@none.invalid> - 2026-10-06 12:14 +0200
                  Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-06 12:43 +0200
                Re: Taming The Switch-Statement Jim Jackson <jj@franjam.org.uk> - 2026-10-06 11:47 +0000
                Re: Taming The Switch-Statement "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-10-06 16:05 -0700
                  Re: Taming The Switch-Statement "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-10-26 18:47 -0700
                Re: Taming The Switch-Statement Kaz Kylheku <046-301-5902@kylheku.com> - 2026-10-07 00:42 +0000
                  Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-07 13:52 +0100
                    Re: Taming The Switch-Statement "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-10-07 14:06 -0700
                      Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-07 23:31 +0100
                        Re: Taming The Switch-Statement "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-10-26 18:48 -0700
        Re: Taming The Switch-Statement Kaz Kylheku <046-301-5902@kylheku.com> - 2026-10-05 21:32 +0000
          Re: Taming The Switch-Statement Johann 'Myrkraverk' Oskarsson <johann@myrkraverk.invalid> - 2026-10-06 06:07 +0800
          Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-05 16:42 -0700
            Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-05 18:05 -0700
              Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-06 09:04 +0200
                Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-06 04:11 -0700
                  Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-06 21:40 +0200
                  Re: Taming The Switch-Statement Tim Rentsch <tr.17687@z991.linuxsc.com> - 2026-10-16 13:12 -0700
              Re: Taming The Switch-Statement Andrey Tarasevich <noone@noone.net> - 2026-10-06 00:59 -0700
                Re: Taming The Switch-Statement Lawrence D’Oliveiro <ldo@nz.invalid> - 2026-10-06 08:16 +0000
                  Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-06 04:21 -0700
              Re: Taming The Switch-Statement Tim Rentsch <tr.17687@z991.linuxsc.com> - 2026-10-16 04:46 -0700
            Re: Taming The Switch-Statement scott@slp53.sl.home (Scott Lurndal) - 2026-10-06 14:43 +0000
              Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-06 17:36 +0200
        Re: Taming The Switch-Statement Andrey Tarasevich <noone@noone.net> - 2026-10-06 20:36 -0700
    Re: Taming The Switch-Statement Johann 'Myrkraverk' Oskarsson <johann@myrkraverk.invalid> - 2026-10-04 00:20 +0800
    Re: Taming The Switch-Statement Andrey Tarasevich <noone@noone.net> - 2026-10-04 09:05 -0700
      Re: Taming The Switch-Statement Lawrence D’Oliveiro <ldo@nz.invalid> - 2026-10-04 23:44 +0000
        Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-05 01:46 +0100
          Re: Taming The Switch-Statement Andrey Tarasevich <noone@noone.net> - 2026-10-04 20:48 -0700
            Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-05 06:24 +0200
          Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-05 11:09 +0100
          Re: Taming The Switch-Statement Johann 'Myrkraverk' Oskarsson <johann@myrkraverk.invalid> - 2026-10-06 05:22 +0800
            Re: Taming The Switch-Statement Johann 'Myrkraverk' Oskarsson <johann@myrkraverk.invalid> - 2026-10-06 05:26 +0800
    Re: Taming The Switch-Statement Lawrence D’Oliveiro <ldo@nz.invalid> - 2026-10-10 00:25 +0000
      Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-10 01:58 +0100
        Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-09 19:17 -0700
          Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-10 11:53 +0100
            Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-10 14:01 +0200
              Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-10 14:11 +0100
                Re: Taming The Switch-Statement Johann 'Myrkraverk' Oskarsson <johann@myrkraverk.invalid> - 2026-10-10 21:34 +0800
                  Re: Taming The Switch-Statement Johann 'Myrkraverk' Oskarsson <johann@myrkraverk.invalid> - 2026-10-10 21:58 +0800
                Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-10 17:50 +0200
                  Re: Taming The Switch-Statement antispam@fricas.org (Waldek Hebisch) - 2026-10-11 05:52 +0000
                    Re: Taming The Switch-Statement Lawrence D’Oliveiro <ldo@nz.invalid> - 2026-10-11 21:16 +0000
                      Re: Taming The Switch-Statement antispam@fricas.org (Waldek Hebisch) - 2026-10-11 23:38 +0000
                  Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-11 11:58 +0100
                    Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-11 14:42 +0200
                      Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-11 14:39 +0100
                        Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-11 15:35 -0700
                    Re: Taming The Switch-Statement antispam@fricas.org (Waldek Hebisch) - 2026-10-11 14:42 +0000
                      Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-11 17:23 +0100
                        Re: Taming The Switch-Statement antispam@fricas.org (Waldek Hebisch) - 2026-10-11 17:48 +0000
                          Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-11 19:10 +0100
                            Re: Taming The Switch-Statement antispam@fricas.org (Waldek Hebisch) - 2026-10-12 07:01 +0000
                    Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-11 16:41 +0100
                Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-10 20:08 +0200
                  Re: Taming The Switch-Statement Michael S <already5chosen@yahoo.com> - 2026-10-10 22:02 +0300
                    Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-10 19:03 +0000
                      Re: Taming The Switch-Statement Michael S <already5chosen@yahoo.com> - 2026-10-10 22:29 +0300
                    Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-10 21:55 +0200
                      Re: Taming The Switch-Statement Michael S <already5chosen@yahoo.com> - 2026-10-10 23:03 +0300
                        Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-10 22:33 +0200
                          Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-10 21:53 +0100
                            Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-10 23:16 +0200
                            Re: Taming The Switch-Statement scott@slp53.sl.home (Scott Lurndal) - 2026-10-11 15:29 +0000
                          Re: Taming The Switch-Statement Andrey Tarasevich <noone@noone.net> - 2026-10-10 15:30 -0700
                            Re: Taming The Switch-Statement Lawrence D’Oliveiro <ldo@nz.invalid> - 2026-10-10 22:58 +0000
                              Re: Taming The Switch-Statement Johann 'Myrkraverk' Oskarsson <johann@myrkraverk.invalid> - 2026-10-11 09:09 +0800
                                Re: Taming The Switch-Statement ram@zedat.fu-berlin.de (Stefan Ram) - 2026-10-11 10:14 +0000
                                  Re: Taming The Switch-Statement Lawrence D’Oliveiro <ldo@nz.invalid> - 2026-10-11 21:12 +0000
                            Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-11 03:58 +0200
                          Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-10 15:32 -0700
                            Re: Taming The Switch-Statement Michael S <already5chosen@yahoo.com> - 2026-10-11 01:58 +0300
                              Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-11 01:43 +0100
                            Re: Taming The Switch-Statement Johann 'Myrkraverk' Oskarsson <johann@myrkraverk.invalid> - 2026-10-11 09:12 +0800
                            Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-11 04:07 +0200
                              Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-10 20:13 -0700
                                Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-11 10:36 +0200
                                Re: Taming The Switch-Statement Tim Rentsch <tr.17687@z991.linuxsc.com> - 2026-10-16 14:22 -0700
                                  Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-16 15:00 -0700
                                    Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-17 01:29 +0200
                                      Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-18 12:48 +0200
                                        Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-18 12:04 +0100
                                          Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-18 14:09 +0200
                                            Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-18 14:34 +0200
                                              Re: Taming The Switch-Statement Michael S <already5chosen@yahoo.com> - 2026-10-18 17:13 +0300
                                                Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-18 16:52 +0200
                                                  Re: Taming The Switch-Statement Michael S <already5chosen@yahoo.com> - 2026-10-18 18:16 +0300
                                                    Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-18 20:47 +0200
                                                      Re: Taming The Switch-Statement Michael S <already5chosen@yahoo.com> - 2026-10-18 22:38 +0300
                                                        Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-19 11:16 +0200
                                                          Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-19 03:50 -0700
                                                            Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-19 12:59 +0200
                                                              Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-19 15:28 -0700
                                                                Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-20 09:05 +0200
                                                            Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-19 14:35 +0000
                                                              Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-19 18:31 +0200
                                                            Re: Taming The Switch-Statement Bob Duff <invalid@invalid.com> - 2026-10-19 19:38 -0400
                                                              Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-19 17:03 -0700
                                                              Re: Taming The Switch-Statement Lawrence D’Oliveiro <ldo@nz.invalid> - 2026-10-20 02:45 +0000
                                                                Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-20 05:01 +0200
                                                                  Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-20 00:45 -0700
                                                    Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-18 18:34 -0700
                                                Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-18 17:49 +0200
                                                  Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-18 22:18 +0000
                                                    Re: Taming The Switch-Statement antispam@fricas.org (Waldek Hebisch) - 2026-10-18 23:51 +0000
                                                      Re: Taming The Switch-Statement Lawrence D’Oliveiro <ldo@nz.invalid> - 2026-10-19 01:56 +0000
                                                        Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-18 19:37 -0700
                                                      Re: Taming The Switch-Statement Rosario19 <Ros@invalid.invalid> - 2026-11-01 10:13 +0100
                                                        Re: Taming The Switch-Statement Rosario19 <Ros@invalid.invalid> - 2026-11-01 10:17 +0100
                                                        Re: Taming The Switch-Statement Rosario19 <Ros@invalid.invalid> - 2026-11-01 10:34 +0100
                                                    Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-18 23:56 +0000
                                                    Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-19 16:15 +0200
                                                Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-18 18:33 -0700
                                        Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-18 13:39 +0200
                                          Re: Taming The Switch-Statement Tim Rentsch <tr.17687@z991.linuxsc.com> - 2026-10-19 08:47 -0700
                                            Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-19 18:28 +0200
                                              Re: Taming The Switch-Statement Tim Rentsch <tr.17687@z991.linuxsc.com> - 2026-10-29 22:11 -0700
                                            Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-19 16:11 -0700
                                            Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-20 01:02 +0000
                                            Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-20 09:18 +0200
                                        Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-18 22:33 +0000
                                          Re: Taming The Switch-Statement Tim Rentsch <tr.17687@z991.linuxsc.com> - 2026-10-20 02:53 -0700
                                            Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-20 12:22 +0000
                                    Re: Taming The Switch-Statement Michael S <already5chosen@yahoo.com> - 2026-10-17 19:39 +0300
                                      Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-17 18:23 +0100
                                        Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-17 17:36 +0000
                                        Re: Taming The Switch-Statement Michael S <already5chosen@yahoo.com> - 2026-10-17 21:03 +0300
                                    Re: Taming The Switch-Statement Tim Rentsch <tr.17687@z991.linuxsc.com> - 2026-10-17 10:30 -0700
                                      Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-17 10:54 -0700
                                    Re: Taming The Switch-Statement Kaz Kylheku <046-301-5902@kylheku.com> - 2026-10-19 23:41 +0000
                                  Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-18 14:18 +0200
                        Re: Taming The Switch-Statement Tim Rentsch <tr.17687@z991.linuxsc.com> - 2026-10-11 04:26 -0700
                          Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-11 13:35 +0100
                            Re: Taming The Switch-Statement Tim Rentsch <tr.17687@z991.linuxsc.com> - 2026-10-11 06:13 -0700
                              Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-11 14:51 +0100
                            Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-11 15:33 +0200
                              Re: Taming The Switch-Statement Andrey Tarasevich <noone@noone.net> - 2026-10-11 09:01 -0700
                                Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-11 19:17 +0200
                                  Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-11 18:57 +0100
                                    Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-11 14:28 -0700
                                      Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-11 23:02 +0100
                                        Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-11 16:29 -0700
                                      Re: Taming The Switch-Statement Tim Rentsch <tr.17687@z991.linuxsc.com> - 2026-10-12 04:03 -0700
                                      Re: Taming The Switch-Statement Michael S <already5chosen@yahoo.com> - 2026-10-12 22:02 +0300
                                        Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-12 21:09 +0200
                                          Re: Taming The Switch-Statement Michael S <already5chosen@yahoo.com> - 2026-10-12 22:31 +0300
                                            Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-12 22:32 +0200
                                              Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-12 22:05 +0100
                                            Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-12 23:14 +0200
                                            Re: Taming The Switch-Statement antispam@fricas.org (Waldek Hebisch) - 2026-10-13 07:23 +0000
                                              Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-13 12:12 +0200
                                                Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-13 11:26 +0100
                                                  Re: Taming The Switch-Statement Richard Harnden <richard.nospam@gmail.invalid> - 2026-10-13 12:10 +0100
                                                    Re: Taming The Switch-Statement Tim Rentsch <tr.17687@z991.linuxsc.com> - 2026-10-13 06:55 -0700
                                                    Re: Taming The Switch-Statement Rosario19 <Ros@invalid.invalid> - 2026-11-01 10:27 +0100
                                                  Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-13 13:33 +0200
                                                    Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-13 13:41 +0100
                                                      Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-13 14:38 +0000
                                                        Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-13 18:04 +0200
                                                          Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-13 20:52 +0000
                                                            Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-13 22:24 +0100
                                                            Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-14 00:03 +0200
                                                              Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-14 10:53 +0000
                                                                Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-14 17:54 +0200
                                                                  Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-14 19:48 +0000
                                              Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-13 11:16 +0100
                                              Re: Taming The Switch-Statement Lawrence D’Oliveiro <ldo@nz.invalid> - 2026-10-13 21:54 +0000
                                                Re: Taming The Switch-Statement antispam@fricas.org (Waldek Hebisch) - 2026-10-16 15:24 +0000
                                                  Re: Taming The Switch-Statement Lawrence D’Oliveiro <ldo@nz.invalid> - 2026-10-16 21:42 +0000
                                                    Re: Taming The Switch-Statement scott@slp53.sl.home (Scott Lurndal) - 2026-10-16 21:46 +0000
                                                      Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-18 12:38 +0200
                                                    Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-16 15:03 -0700
                                                  Re: Taming The Switch-Statement Tim Rentsch <tr.17687@z991.linuxsc.com> - 2026-10-17 19:25 -0700
                                                    Re: Taming The Switch-Statement antispam@fricas.org (Waldek Hebisch) - 2026-10-20 00:16 +0000
                                                      Re: Taming The Switch-Statement Tim Rentsch <tr.17687@z991.linuxsc.com> - 2026-10-20 16:10 -0700
                                                Re: Taming The Switch-Statement Rosario19 <Ros@invalid.invalid> - 2026-11-01 10:39 +0100
                                                  Re: Taming The Switch-Statement Lawrence D’Oliveiro <ldo@nz.invalid> - 2026-11-02 02:49 +0000
                                            Re: Taming The Switch-Statement Tim Rentsch <tr.17687@z991.linuxsc.com> - 2026-10-13 07:40 -0700
                                              Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-13 16:46 +0100
                                                Re: Taming The Switch-Statement Tim Rentsch <tr.17687@z991.linuxsc.com> - 2026-10-13 09:10 -0700
                                                  Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-13 18:15 +0100
                                                Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-13 18:27 -0700
                                                  Re: Taming The Switch-Statement gazelle@shell.xmission.com (Kenny McCormack) - 2026-10-14 01:50 +0000
                                                    Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-14 10:58 +0000
                                              Re: Taming The Switch-Statement Michael S <already5chosen@yahoo.com> - 2026-10-13 22:54 +0300
                                                Re: Taming The Switch-Statement Tim Rentsch <tr.17687@z991.linuxsc.com> - 2026-10-13 16:45 -0700
                                                Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-13 18:34 -0700
                                                Re: Taming The Switch-Statement Kaz Kylheku <046-301-5902@kylheku.com> - 2026-10-14 05:17 +0000
                                                  Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-14 13:46 +0100
                                    Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-12 07:05 +0200
                                      Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-12 14:37 +0100
                                        Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-12 16:12 +0200
                                          Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-12 16:32 +0100
                                            Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-12 19:05 +0200
                                              Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-12 19:15 +0100
                                                Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-12 16:43 -0700
                                                Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-12 16:45 -0700
                                                  Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-12 23:46 +0000
                                                  Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-13 00:56 +0100
                                        Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-12 17:58 +0000
                                          Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-12 20:38 +0100
                                            Re: Taming The Switch-Statement scott@slp53.sl.home (Scott Lurndal) - 2026-10-12 19:52 +0000
                                              Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-12 22:56 +0200
                                              Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-12 21:57 +0100
                                                Re: Taming The Switch-Statement scott@slp53.sl.home (Scott Lurndal) - 2026-10-12 21:21 +0000
                                                  Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-12 22:46 +0100
                                                    Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-13 09:27 +0200
                                                      Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-13 12:18 +0200
                                                      Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-13 11:33 +0100
                                                Re: Taming The Switch-Statement Michael S <already5chosen@yahoo.com> - 2026-10-13 00:25 +0300
                                            Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-12 22:20 +0000
                                            Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-12 17:02 -0700
                                              Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-13 01:53 +0100
                                              Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-13 03:54 +0200
                                              Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-13 10:52 +0000
                                                Re: Taming The Switch-Statement Michael S <already5chosen@yahoo.com> - 2026-10-13 23:16 +0300
                                                Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-13 18:44 -0700
                                            Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-12 17:33 -0700
                                              Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-14 00:21 +0100
                                                Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-13 20:40 -0700
                                                Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-14 03:59 +0000
                                                  Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-13 21:35 -0700
                                                    Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-14 11:27 +0000
                                                  Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-14 12:17 +0100
                                                    Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-14 12:38 +0000
                                                      Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-14 16:49 +0100
                                                        Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-14 19:30 +0000
                                                          Re: Taming The Switch-Statement Michael S <already5chosen@yahoo.com> - 2026-10-14 23:28 +0300
                                                            Re: Taming The Switch-Statement Tim Rentsch <tr.17687@z991.linuxsc.com> - 2026-10-14 21:30 -0700
                                                          Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-14 21:56 +0100
                                                            Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-14 21:59 +0100
                                                            Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-15 01:26 +0000
                                                              Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-15 12:01 +0100
                                                                Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-15 11:45 +0000
                                                                  Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-15 15:57 +0100
                                                                    Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-15 18:10 +0100
                                                                      Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-16 02:42 +0100
                                                                    Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-15 20:42 +0000
                                                                      Re: Taming The Switch-Statement Michael S <already5chosen@yahoo.com> - 2026-10-15 23:57 +0300
                                                                      Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-15 23:22 +0100
                                                                        Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-16 12:40 +0000
                                                                          Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-17 00:01 +0100
                                                                            Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-16 16:53 -0700
                                                                              Re: Taming The Switch-Statement gazelle@shell.xmission.com (Kenny McCormack) - 2026-10-17 11:09 +0000
                                                                                Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-17 13:11 +0100
                                                                                Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-17 15:15 +0200
                                                                              Re: Taming The Switch-Statement Tim Rentsch <tr.17687@z991.linuxsc.com> - 2026-10-17 08:34 -0700
                                                                            Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-17 03:19 +0000
                                                                              Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-17 12:34 +0100
                                                                                Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-17 17:58 +0000
                                                                                  Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-17 21:40 +0100
                                                                                    Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-18 14:32 +0200
                                                                                    Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-19 01:19 +0000
                                                                                      Re: Taming The Switch-Statement antispam@fricas.org (Waldek Hebisch) - 2026-10-19 09:18 +0000
                                                                                        Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-19 12:00 +0000
                                                                                      Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-19 12:47 +0100
                                                                                        Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-19 14:08 +0200
                                                                                        Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-19 17:22 +0000
                                                                                          Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-19 20:34 +0100
                                                                                          Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-20 00:35 +0200
                                                                                            Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-20 00:04 +0100
                                                                                        Re: Taming The Switch-Statement antispam@fricas.org (Waldek Hebisch) - 2026-10-20 01:03 +0000
                                                                                          Re: Taming The Switch-Statement Lawrence D’Oliveiro <ldo@nz.invalid> - 2026-10-20 02:44 +0000
                                                                                          Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-20 15:11 +0100
                                                                                            Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-20 17:02 +0200
                                                                                              Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-20 21:07 +0100
                                                                                                Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-21 11:20 +0200
                                                                                                  Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-21 12:29 +0100
                                                                                                    Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-21 16:40 +0200
                                                                                            Re: Taming The Switch-Statement Michael S <already5chosen@yahoo.com> - 2026-10-20 23:33 +0300
                                                                                              Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-21 00:01 +0100
                                                                                Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-18 13:22 +0200
                                                                                  Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-18 14:12 +0200
                                                                                  Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-18 14:33 +0100
                                                                                    Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-18 16:27 +0200
                                                                                      Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-18 17:09 +0100
                                                                                        Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-18 21:09 +0200
                                                                                          Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-18 23:20 +0100
                                                                                            Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-19 12:26 +0200
                                                                                          Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-19 15:16 +0200
                                                                                            Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-19 15:46 +0200
                                                                                              Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-19 16:03 +0200
                                                                                              Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-19 22:28 +0100
                                                                                                Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-20 10:01 +0200
                                                                                                  Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-20 12:41 +0100
                                                                                                    Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-20 14:58 +0200
                                                                                                      Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-20 17:05 -0700
                                                                                                        Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-21 12:45 +0200
                                                                                                      Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-21 02:04 +0100
                                                                                                        Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-21 13:21 +0200
                                                                                                          Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-21 11:26 +0000
                                                                                                          Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-21 12:33 +0100
                                                                                                            Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-21 14:21 +0200
                                                                                                          Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-21 15:41 +0100
                                                                                                            Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-21 17:36 +0200
                                                                                                            Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-21 15:37 +0000
                                                                                                              Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-21 17:22 +0100
                                                                                                                Re: Taming The Switch-Statement scott@slp53.sl.home (Scott Lurndal) - 2026-10-21 17:21 +0000
                                                                                                                  Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-21 19:04 +0100
                                                                                                                    Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-21 18:38 +0000
                                                                                                                      Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-21 20:36 +0100
                                                                                                                        Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-21 20:36 +0000
                                                                                                                          Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-21 23:10 +0100
                                                                                                                            Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-21 22:55 +0000
                                                                                                                            Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-22 17:19 +0200
                                                                                                                    Re: Taming The Switch-Statement scott@slp53.sl.home (Scott Lurndal) - 2026-10-21 19:17 +0000
                                                                                                                      Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-21 20:49 +0100
                                                                                                                Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-21 18:56 +0000
                                                                                                    Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-20 19:24 +0000
                                                                                                      Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-20 21:30 +0100
                                                                                                        Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-20 21:44 +0000
                                                                                                          Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-20 23:43 +0100
                                                                                                            Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-21 00:56 +0000
                                                                                                              Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-21 02:39 +0100
                                                                                                                Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-20 18:55 -0700
                                                                                                                  Re: Taming The Switch-Statement gazelle@shell.xmission.com (Kenny McCormack) - 2026-10-21 07:22 +0000
                                                                                                                Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-21 01:56 +0000
                                                                                                            Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-21 15:10 +0200
                                                                                                      Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-21 14:17 +0200
                                                                                                        Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-21 13:22 +0000
                                                                                                          Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-21 17:29 +0200
                                                                                                            Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-21 18:43 +0000
                                                                                                        Re: Taming The Switch-Statement "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-10-21 13:02 -0700
                                                                                                          Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-22 08:57 +0200
                                                                                                            Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-22 12:56 +0000
                                                                                                              Re: Taming The Switch-Statement Kaz Kylheku <046-301-5902@kylheku.com> - 2026-10-22 17:00 +0000
                                                                                                            Re: Taming The Switch-Statement Kaz Kylheku <046-301-5902@kylheku.com> - 2026-10-22 16:54 +0000
                                                                                                              Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-22 21:09 +0200
                                                                                                              Re: Taming The Switch-Statement "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-10-22 12:46 -0700
                                                                                                                Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-23 09:37 +0200
                                                                                                                  Re: Taming The Switch-Statement "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-10-23 14:21 -0700
                                                                                                                    Re: Taming The Switch-Statement Lawrence D’Oliveiro <ldo@nz.invalid> - 2026-10-23 22:40 +0000
                                                                                                                      Re: Taming The Switch-Statement "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-10-23 18:33 -0700
                                                                                                                        Re: Taming The Switch-Statement Lawrence D’Oliveiro <ldo@nz.invalid> - 2026-10-24 22:26 +0000
                                                                                                                          Modelling self/this? (was Re: Taming The Switch-Statement) Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-25 00:56 +0200
                                                                                                                          Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-24 16:38 -0700
                                                                                                                            Re: Taming The Switch-Statement steve g <Sgonedes1977@gmail.com> - 2026-10-28 01:13 -0400
                                                                                                                              Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-27 22:33 -0700
                                                                                                                    Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-24 12:58 +0200
                                                                                                                      Re: Taming The Switch-Statement "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-10-24 21:42 -0700
                                                                                                                        Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-25 10:51 +0100
                                                                                                                          Re: Taming The Switch-Statement "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-10-25 13:54 -0700
                                                                                                                        Re: Case-Sensitivity (was Re: Taming The Switch-Statement) Lawrence D’Oliveiro <ldo@nz.invalid> - 2026-10-25 20:30 +0000
                                                                                                                          Re: Case-Sensitivity (was Re: Taming The Switch-Statement) Blaine <cactus_DAC@yahoo.com> - 2026-10-26 10:28 -0600
                                                                                                                          Re: Case-Sensitivity (was Re: Taming The Switch-Statement) steve g <Sgonedes1977@gmail.com> - 2026-10-28 02:26 -0400
                                                                                                                            Re: Case-Sensitivity (was Re: Taming The Switch-Statement) Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-28 15:50 +0100
                                                                                                                              Re: Case-Sensitivity (was Re: Taming The Switch-Statement) Blaine <cactus_DAC@yahoo.com> - 2026-10-28 10:34 -0600
                                                                                                                                Re: Case-Sensitivity (was Re: Taming The Switch-Statement) fir <profesor.fir@gmail.com> - 2026-10-28 19:25 +0100
                                                                                                                                  Re: Case-Sensitivity (was Re: Taming The Switch-Statement) fir <profesor.fir@gmail.com> - 2026-10-28 19:35 +0100
                                                                                                                                    Re: Case-Sensitivity (was Re: Taming The Switch-Statement) fir <profesor.fir@gmail.com> - 2026-10-28 19:40 +0100
                                                                                                              Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-22 16:42 -0700
                                                                                                                Re: Taming The Switch-Statement Blaine <cactus_DAC@yahoo.com> - 2026-10-22 18:38 -0600
                                                                                                                Re: Taming The Switch-Statement Kaz Kylheku <046-301-5902@kylheku.com> - 2026-10-23 04:23 +0000
                                                                                                                  Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-23 01:09 -0700
                                                                                            Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-19 15:48 -0700
                                                                                              Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-20 01:18 +0200
                                                                                        Re: Taming The Switch-Statement antispam@fricas.org (Waldek Hebisch) - 2026-10-19 08:46 +0000
                                                                                          Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-19 15:00 +0100
                                                                                            Re: Taming The Switch-Statement Richard Harnden <richard.nospam@gmail.invalid> - 2026-10-19 16:55 +0100
                                                                                          Re: Taming The Switch-Statement Lawrence D’Oliveiro <ldo@nz.invalid> - 2026-10-20 02:40 +0000
                                                                                  Re: Taming The Switch-Statement Michael S <already5chosen@yahoo.com> - 2026-10-18 17:24 +0300
                                                                                    Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-18 16:58 +0200
                                                                                      Re: Taming The Switch-Statement Michael S <already5chosen@yahoo.com> - 2026-10-18 18:26 +0300
                                                                                        Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-18 18:11 +0200
                                                                                          Re: Taming The Switch-Statement Michael S <already5chosen@yahoo.com> - 2026-10-18 19:32 +0300
                                                                                            Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-19 15:44 +0200
                                                                                              Re: Taming The Switch-Statement Michael S <already5chosen@yahoo.com> - 2026-10-19 22:35 +0300
                                                                                                Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-19 23:27 +0200
                                                                                                  Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-19 23:29 +0200
                                                                                                  Re: Taming The Switch-Statement Michael S <already5chosen@yahoo.com> - 2026-10-20 00:57 +0300
                                                                                                    Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-20 00:55 +0200
                                                                                                  Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-20 10:25 +0200
                                                                                                    Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-20 16:56 +0200
                                                                                                      Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-20 17:32 +0200
                                                                                                    Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-20 18:23 -0700
                                                                                                      Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-21 15:28 +0200
                                                                                        Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-18 21:11 +0200
                                                                                    Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-18 18:34 +0100
                                                              Re: Taming The Switch-Statement Tim Rentsch <tr.17687@z991.linuxsc.com> - 2026-10-15 05:17 -0700
                                                                Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-15 14:37 +0000
                                                                  Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-15 20:50 +0200
                                                                Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-15 19:59 +0100
                                                                  Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-15 20:49 +0000
                                                      Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-14 18:51 +0100
                                                        Re: Taming The Switch-Statement "Peyton" <peyton@solacium.com> - 2026-10-14 11:04 -0700
                                                        Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-14 19:47 +0000
                                                        Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-14 13:58 -0700
                                                          Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-15 12:08 +0200
                                                    Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-14 14:23 -0700
                                                Re: Taming The Switch-Statement scott@slp53.sl.home (Scott Lurndal) - 2026-10-14 14:35 +0000
                                                Re: Taming The Switch-Statement Rosario19 <Ros@invalid.invalid> - 2026-11-01 11:02 +0100
                                                  Re: Taming The Switch-Statement bartc <bc@freeuk.com> - 2026-11-01 12:09 +0000
                                                  Re: Taming The Switch-Statement Lawrence D’Oliveiro <ldo@nz.invalid> - 2026-11-02 02:50 +0000
                                Re: Taming The Switch-Statement Tim Rentsch <tr.17687@z991.linuxsc.com> - 2026-10-16 03:36 -0700
                    Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-10 16:38 -0700
                  Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-10 21:09 +0100
                    Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-10 23:14 +0200
                      Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-10 23:01 +0100
                      Re: Taming The Switch-Statement antispam@fricas.org (Waldek Hebisch) - 2026-10-11 08:00 +0000
                        Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-11 10:27 +0200
                          Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-11 10:49 +0200
            Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-10 16:30 -0700
              Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-11 02:12 +0100
                Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-10 19:55 -0700
                  Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-11 11:00 +0200
                  Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-11 12:21 +0100
                    Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-11 14:04 -0700
                      Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-11 23:05 +0100
                        Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-12 07:22 +0200
                          Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-12 11:42 +0100
                            Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-12 16:15 +0200
                            Re: Taming The Switch-Statement scott@slp53.sl.home (Scott Lurndal) - 2026-10-12 14:34 +0000
                              Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-12 16:47 +0100
                                Re: Taming The Switch-Statement Johann 'Myrkraverk' Oskarsson <johann@myrkraverk.invalid> - 2026-10-13 00:15 +0800
                                  Re: Taming The Switch-Statement ram@zedat.fu-berlin.de (Stefan Ram) - 2026-10-12 17:02 +0000
                                    Re: Taming The Switch-Statement Johann 'Myrkraverk' Oskarsson <johann@myrkraverk.invalid> - 2026-10-13 20:04 +0800
                                      Re: Taming The Switch-Statement ram@zedat.fu-berlin.de (Stefan Ram) - 2026-10-13 17:28 +0000
                                        Re: Taming The Switch-Statement Johann 'Myrkraverk' Oskarsson <johann@myrkraverk.invalid> - 2026-10-14 02:05 +0800
                                Re: Taming The Switch-Statement scott@slp53.sl.home (Scott Lurndal) - 2026-10-12 17:17 +0000
                                Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-12 17:37 +0000
                            Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-12 17:34 +0000
                              Re: Taming The Switch-Statement scott@slp53.sl.home (Scott Lurndal) - 2026-10-12 18:46 +0000
                                Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-12 19:52 +0100
                                  Re: Taming The Switch-Statement scott@slp53.sl.home (Scott Lurndal) - 2026-10-12 19:42 +0000
                                  Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-12 16:29 -0700
                                    Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-13 00:53 +0100
                                      Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-12 18:14 -0700
                                Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-12 22:35 +0000
                            Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-12 16:14 -0700
                Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-11 22:36 +0100
          Re: Taming The Switch-Statement gazelle@shell.xmission.com (Kenny McCormack) - 2026-10-10 13:14 +0000
          Re: Taming The Switch-Statement Michael S <already5chosen@yahoo.com> - 2026-10-10 19:50 +0300
            Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-10 20:13 +0200
              Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-10 15:54 -0700
                Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-11 03:41 +0200
                  Re: Taming The Switch-Statement Johann 'Myrkraverk' Oskarsson <johann@myrkraverk.invalid> - 2026-10-11 09:51 +0800
                  Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-11 11:41 +0200
            Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-10 16:44 -0700
          Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-10 16:56 -0700
      Re: Taming The Switch-Statement Lawrence D’Oliveiro <ldo@nz.invalid> - 2026-10-11 21:26 +0000
        Re: Taming The Switch-Statement Jon Ribbens <jon+usenet@unequivocal.eu> - 2026-10-11 22:12 +0000
      Re: Taming The Switch-Statement Lawrence D’Oliveiro <ldo@nz.invalid> - 2026-10-13 22:00 +0000
        Re: Taming The Switch-Statement bart <bc@freeuk.com> - 2026-10-13 23:19 +0100
    Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-21 11:19 +0200
      Re: Taming The Switch-Statement Blaine <cactus_DAC@yahoo.com> - 2026-10-21 09:29 -0600
        Re: Taming The Switch-Statement Lawrence D’Oliveiro <ldo@nz.invalid> - 2026-10-22 00:33 +0000
        Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-22 09:51 +0200
      Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-26 13:07 +0100
        Re: Taming The Switch-Statement bartc <bc@freeuk.com> - 2026-10-26 12:11 +0000
          Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-26 13:20 +0100
            Re: Taming The Switch-Statement bartc <bc@freeuk.com> - 2026-10-26 14:16 +0000
              Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-26 17:03 +0100
                Re: Taming The Switch-Statement bartc <bc@freeuk.com> - 2026-10-26 16:32 +0000
                  Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-26 17:37 +0100
                    Re: Taming The Switch-Statement bartc <bc@freeuk.com> - 2026-10-26 16:42 +0000
                      Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-26 19:39 +0100
                        Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-26 20:03 +0100
                      Re: Taming The Switch-Statement "chine.bleu" <chine.bleu@yahoo.com> - 2026-10-28 05:56 -0700
                        Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-28 14:06 +0100
                          Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-28 14:21 +0100
                          Re: Taming The Switch-Statement Richard Harnden <richard.nospam@gmail.invalid> - 2026-10-28 14:24 +0000
                        Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-28 15:52 +0100
                  Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-26 17:45 +0100
                    Re: Taming The Switch-Statement bartc <bc@freeuk.com> - 2026-10-26 17:00 +0000
                      Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-26 18:06 +0100
                        Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-26 18:11 +0100
                          Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-26 18:37 +0100
                        Re: Taming The Switch-Statement bartc <bc@freeuk.com> - 2026-10-26 19:03 +0000
                          Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-26 20:39 +0100
                            Re: Taming The Switch-Statement bartc <bc@freeuk.com> - 2026-10-26 19:59 +0000
                              Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-26 21:13 +0100
                                Re: Taming The Switch-Statement bartc <bc@freeuk.com> - 2026-10-26 20:56 +0000
                                  Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-26 22:37 +0100
                                  Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-26 22:40 +0100
                                    Re: Taming The Switch-Statement "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-10-26 14:46 -0700
                                      Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-27 11:51 +0100
                                        Re: Taming The Switch-Statement "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-10-27 13:18 -0700
                                          Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-27 21:49 +0100
                                            Re: Taming The Switch-Statement "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-10-27 14:23 -0700
                                            Re: Taming The Switch-Statement "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-10-27 14:25 -0700
                                              Re: Taming The Switch-Statement Richard Harnden <richard.nospam@gmail.invalid> - 2026-10-27 22:39 +0000
                                                Re: Taming The Switch-Statement Dan Purgert <dan@djph.net> - 2026-10-27 22:44 +0000
                                                  Re: Taming The Switch-Statement cross@spitfire.i.gajendra.net (Dan Cross) - 2026-10-27 23:00 +0000
                                                    Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-27 16:33 -0700
                                                      Re: Taming The Switch-Statement Blaine <cactus_DAC@yahoo.com> - 2026-10-27 20:06 -0600
                                                        Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-27 19:21 -0700
                                                          Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-28 16:00 +0100
                                                            Re: Taming The Switch-Statement Blaine <cactus_DAC@yahoo.com> - 2026-10-28 10:35 -0600
                                                            Re: Taming The Switch-Statement Tim Rentsch <tr.17687@z991.linuxsc.com> - 2026-10-28 11:59 -0700
                                                              Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-28 23:25 +0100
                                                                Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-29 08:28 +0100
                                                                  Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-29 08:32 +0100
                                                                Re: Taming The Switch-Statement Tim Rentsch <tr.17687@z991.linuxsc.com> - 2026-10-29 22:16 -0700
                                                          Re: Taming The Switch-Statement Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-28 16:08 -0700
                                                        Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-28 08:31 +0100
                                                          Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-28 09:13 +0100
                                                            Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-28 09:24 +0100
                                                              Re: Taming The Switch-Statement bartc <bc@freeuk.com> - 2026-10-28 11:09 +0000
                                                                Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-28 14:10 +0100
                                                        Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-28 09:04 +0100
                                                          Re: Taming The Switch-Statement "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-10-28 14:25 -0700
                                                    Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-28 00:39 +0100
                                                      Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-28 08:23 +0100
                                                      Re: Taming The Switch-Statement Tim Rentsch <tr.17687@z991.linuxsc.com> - 2026-10-28 12:02 -0700
                                                        Re: Taming The Switch-Statement Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-10-28 23:31 +0100
                                  Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-26 22:51 +0100
                              Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-26 21:32 +0100
                                Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-26 21:47 +0100
                                Re: Taming The Switch-Statement bartc <bc@freeuk.com> - 2026-10-26 21:11 +0000
                                  Re: Taming The Switch-Statement "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-10-26 14:17 -0700
                                    Re: Taming The Switch-Statement bartc <bc@freeuk.com> - 2026-10-26 21:50 +0000
                                      Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-26 23:37 +0100
                                        Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-27 00:01 +0100
                                          Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-27 00:28 +0100
                                          Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-27 00:55 +0100
                                            Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-27 09:50 +0100
                                        Re: Taming The Switch-Statement bartc <bc@freeuk.com> - 2026-10-27 01:12 +0000
                                          Re: Taming The Switch-Statement "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-10-26 18:43 -0700
                                          Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-27 09:37 +0100
                                            Re: Taming The Switch-Statement bartc <bc@freeuk.com> - 2026-10-27 11:51 +0000
                                              Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-27 12:57 +0100
                                                Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-27 13:10 +0100
                                                Re: Taming The Switch-Statement bartc <bc@freeuk.com> - 2026-10-27 12:14 +0000
                                                  Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-27 13:22 +0100
                                                    Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-27 13:30 +0100
                                                  Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-27 13:48 +0100
                                                  Re: Taming The Switch-Statement David Brown <david.brown@hesbynett.no> - 2026-10-27 13:54 +0100
                                                    Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-27 15:19 +0100
                                                      Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-27 15:20 +0100
                                                        Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-27 15:24 +0100
                                                          Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-27 15:36 +0100
                                                            Re: Taming The Switch-Statement bartc <bc@freeuk.com> - 2026-10-27 17:13 +0000
                                                              Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-27 18:45 +0100
                                                                Re: Taming The Switch-Statement Richard Harnden <richard.nospam@gmail.invalid> - 2026-10-27 18:16 +0000
                                                                Re: Taming The Switch-Statement bartc <bc@freeuk.com> - 2026-10-27 19:21 +0000
                                                                  Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-27 20:42 +0100
                                                                    Re: Taming The Switch-Statement "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-10-27 13:16 -0700
                                                                      Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-27 21:36 +0100
                                                                        Re: Taming The Switch-Statement "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-10-28 14:53 -0700
                                                                          Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-29 08:05 +0100
                                                                            Re: Taming The Switch-Statement "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-10-30 11:16 -0700
                                  Re: Taming The Switch-Statement "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-10-26 14:43 -0700
                                    Re: Taming The Switch-Statement bartc <bc@freeuk.com> - 2026-10-26 21:55 +0000
                                      Re: Taming The Switch-Statement "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-10-26 15:01 -0700
                        Re: Taming The Switch-Statement Rosario19 <Ros@invalid.invalid> - 2026-10-29 08:30 +0100
                          Re: Taming The Switch-Statement Rosario19 <Ros@invalid.invalid> - 2026-10-29 08:38 +0100
                            Re: Taming The Switch-Statement Rosario19 <Ros@invalid.invalid> - 2026-10-29 08:41 +0100
                          Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-29 12:31 +0100
                            Re: Taming The Switch-Statement Rosario19 <Ros@invalid.invalid> - 2026-10-31 10:54 +0100
                          Re: BizFuss (was Re: Taming The Switch-Statement) Lawrence D’Oliveiro <ldo@nz.invalid> - 2026-10-30 08:27 +0000
                            Re: BizFuss (was Re: Taming The Switch-Statement) bartc <bc@freeuk.com> - 2026-10-30 11:47 +0000
                              Re: BizFuss (was Re: Taming The Switch-Statement) Rosario19 <Ros@invalid.invalid> - 2026-10-31 11:39 +0100
                                Re: BizFuss (was Re: Taming The Switch-Statement) bartc <bc@freeuk.com> - 2026-10-31 12:21 +0000
                                  Re: BizFuss (was Re: Taming The Switch-Statement) Rosario19 <Ros@invalid.invalid> - 2026-10-31 14:30 +0100
                                    Re: BizFuss (was Re: Taming The Switch-Statement) bartc <bc@freeuk.com> - 2026-10-31 13:38 +0000
                                      Re: BizFuss (was Re: Taming The Switch-Statement) Rosario19 <Ros@invalid.invalid> - 2026-10-31 18:14 +0100
                                  Re: BizFuss (was Re: Taming The Switch-Statement) bartc <bc@freeuk.com> - 2026-10-31 13:27 +0000
                            Re: BizFuss (was Re: Taming The Switch-Statement) bartc <bc@freeuk.com> - 2026-10-30 15:36 +0000
                            Re: BizFuss (was Re: Taming The Switch-Statement) Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-10-30 12:04 -0700
                              Python is the universal language (Was: BizFuss (was Re: Taming The Switch-Statement)) gazelle@shell.xmission.com (Kenny McCormack) - 2026-10-30 20:10 +0000
                            Re: BizFuss (was Re: Taming The Switch-Statement) Rosario19 <Ros@invalid.invalid> - 2026-10-31 11:36 +0100
                Re: Taming The Switch-Statement "chine.bleu" <chine.bleu@yahoo.com> - 2026-10-28 05:33 -0700
                  Re: Taming The Switch-Statement fir <profesor.fir@gmail.com> - 2026-10-28 14:45 +0100
                    Re: Taming The Switch-Statement "chine.bleu" <chine.bleu@yahoo.com> - 2026-10-29 07:34 -0700
          Re: Taming The Switch-Statement steve g <Sgonedes1977@gmail.com> - 2026-10-28 02:27 -0400

Page 18 of 32 — ← Prev page 1 … 16 17 [18] 19 20 … 32  Next page →


#403391

Frombart <bc@freeuk.com>
Date2026-10-21 00:01 +0100
Message-ID<11b8rrh$3eu2m$1@dont-email.me>
In reply to#403388
On 20/10/2026 21:33, Michael S wrote:
> On Tue, 20 Oct 2026 15:11:35 +0100
> bart <bc@freeuk.com> wrote:

> I suppose that you wholeheartedly agree. I don't. I never found computer
> language design fun.

The fun part is afterwards when you use your very own language. Quite a 
way to get there though.

> Methinks there were less than 100 people exposed to C before it became
> too late. May be, just 50.

Were you there? You seem confident of those figures! I've no idea what 
went on, myself; I can only speculate.

> 
>> Had no-one even glanced at a Pascal spec, if there was no working
>> copy? It would have transformed C type syntax.
>>
>> (ACTUALLY IT IS NOT TOO LATE. A secondary postfix deref op could have
>> been added. This could have been done 50 years ago, with the original
>> eventually deprecated.
>>
>> But this is a common theme of mine whether I perceive a problem that
>> people grudgingly admit might not be idea. But nothing was ever done
>> to fix it even after decades.)
>>
> 
> It was. There are many new languages.
> Today, C sees little use outside of small to mid-sized mocrocontrollers
> and OS kernels.
> Most user-layer applications on general purpose computers are written
> in newer languages.


I still see C everywhere, for example in the APIs of libraries like SDL, 
STB, GTK, OpenGL, Raylib, GMP, plus the APIs for many Windows 
subsystems, plus Linux.

It's also popular as a target language for compilers (when LLVM is too 
much). Amateur compiler writers also seem to love creating C or C subset 
compilers more than any other language (they perceive it as simpler than 
it really is).

And many language projects are still written in C, or at bootstrapped 
with C.

This is all desktop machines still. Of course many are also migrating to 
products like Rust, Go and Zig.

For me, the fact that there's still an appetite for a language of this 
class is one reason I still persist with mine.


[toc] | [prev] | [next] | [standalone]


#403261

FromDavid Brown <david.brown@hesbynett.no>
Date2026-10-18 13:22 +0200
Message-ID<11b2a6d$131h6$1@dont-email.me>
In reply to#403234
On 17/10/2026 13:34, bart wrote:
> On 17/10/2026 04:19, Dan Cross wrote:
>> In article <11auad0$3no1k$1@dont-email.me>, bart  <bc@freeuk.com> wrote:
> 
>>> Those are considered more productive.
>>
>> ...and you think that's because of the syntax, and not the high
>> level nature of those languages?
> 
> It's a combination.
> 
>> Yes, the syntax is pretty gnarly; Dennis Ritchie even said as
>> much.  Fixed in Go and Rust, but also, I doubt you've ever in
>> your life had a variable of type array of array of length 8 of
>> a pointer to a pointer to a function returning an array of
>> pointers to char.  Finding the most ridiculous example you can
>> is not really evidence of anything besides your weird obsession
> 
> That was the first one I saw online next to a quote from K&R and I 
> assumed it was from the book. In fact the example from the book is this:
> 
>    char (*(*x())[])()
> 
> I've no idea what the means either. The point is not that the examples 
> are ridiculous, but that they are hard to convert to and from LTR form 
> which is how we think. With LTR syntax it becomes utterly trivial to 
> read or write them, no matter how complex.
> 
> (There's a tool called CDECL that translates types from C syntax to LTR 
> English or vice versa. It calls the C versions 'gibberish'. This is a 
> real thing!)
> 

Putting that example in cdecl gives :

"declare x as function returning pointer to array of pointer to function 
returning char"

To me, that is just as much gibberish as the original C.  No syntax is 
going to make sense of it - no amount of "ref" or "func" or pre-fix 
array notation will help.

If you want complex types in a programming language, make them out of 
simpler, named types that express what you are trying to achieve.  I 
think any decent typed programming language will have a way to do this - 
for C, "typedef" is your friend here.

(And do /not/ reply by bringing up examples you have cherry-picked from 
code you have found, as though it was my fault they wrote 
incomprehensible code.)


> 
>> with finding abstruse corner cases and holding them up as
>> reasons to dislike C.
> 
> The first example I gave was the simplest form of function pointer, 
> where the syntax is 'void(*)(void)'. Hardly a corner case, and it 
> rapidly goes downhill.

Name the types at the point where they are clear, and build them up from 
there.

	typedef void (*fp_void)(void);



> 
> If meeting C for the first time, that does not bode well. If the 
> designers did not care about this, that does not inspire confidence in 
> the rest of the language.

C is not, and has never claimed to be, a beginner-friendly language.  It 
is designed to be efficient while remaining quite a small language, 
which means that there are parts that are harder to use correctly, 
details that are important to understand, and it has plenty of scope to 
write code that is unclear.  It works well for responsible programmers 
who learn the language and code carefully - but you have to learn more 
before you can understand and use it than, say, BASIC or Python.

[toc] | [prev] | [next] | [standalone]


#403264

FromJanis Papanagnou <janis_papanagnou+ng@hotmail.com>
Date2026-10-18 14:12 +0200
Message-ID<11b2d46$3pvda$5@dont-email.me>
In reply to#403261
On 2026-10-18 13:22, David Brown wrote:
> On 17/10/2026 13:34, bart wrote:
>> [...]
>>    char (*(*x())[])()
>> [...]
> 
> Putting that example in cdecl gives :
> 
> "declare x as function returning pointer to array of pointer to function 
> returning char"

There's different things here with the C-declaration.
* Complexity of expression; as you say below this can be alleviated by
    structuring with "subtypes" and 'typedef'.
* Cryptic syntax with many (spurious but in "C" necessary) parenthesis.
* Mixed/mangled order of component concerning its logical structure.

The 'cdecl' tool helps with point 2 and 3. - So I consider it to be
quite useful! (Although I have to admit that I've never used it myself
in practice because (for my code) I try to not compose overly complex
type definitions; and when it gets complex point 1 applies.) Especially
if you have to work with third-party code it can spare you some time,
though.

> 
> To me, that is just as much gibberish as the original C.  No syntax is 
> going to make sense of it - no amount of "ref" or "func" or pre-fix 
> array notation will help.

I assume you're here commenting on some of bart's adopted syntactical
decisions.

FWIW; why I prefer some other language design decisions is exactly that
they use syntaxes with such keywords. They typically reduce the number
of parentheses and other "graph" characters thereby reducing the effect
of code appearing quickly more cryptic than necessary, they make the
definition more clear and better readable (IMO). Keeping (in addition)
the logical order of its components also helps IMO to easier understand
the declaration construct.

To be frank, it's beyond me why anyone wouldn't admire such consistent
declaration syntaxes. (And if bart has adopted those principles that's
certainly not a bad thing. YMMV.)

> 
> If you want complex types in a programming language, make them out of 
> simpler, named types that express what you are trying to achieve.  I 
> think any decent typed programming language will have a way to do this - 
> for C, "typedef" is your friend here.

Yes. This is what we can do about the "complexity" aspect of the topic.

Janis

> [snip]

[toc] | [prev] | [next] | [standalone]


#403269

Frombart <bc@freeuk.com>
Date2026-10-18 14:33 +0100
Message-ID<11b2hr6$15thq$1@dont-email.me>
In reply to#403261
On 18/10/2026 12:22, David Brown wrote:
> On 17/10/2026 13:34, bart wrote:
>> On 17/10/2026 04:19, Dan Cross wrote:
>>> In article <11auad0$3no1k$1@dont-email.me>, bart  <bc@freeuk.com> wrote:
>>
>>>> Those are considered more productive.
>>>
>>> ...and you think that's because of the syntax, and not the high
>>> level nature of those languages?
>>
>> It's a combination.
>>
>>> Yes, the syntax is pretty gnarly; Dennis Ritchie even said as
>>> much.  Fixed in Go and Rust, but also, I doubt you've ever in
>>> your life had a variable of type array of array of length 8 of
>>> a pointer to a pointer to a function returning an array of
>>> pointers to char.  Finding the most ridiculous example you can
>>> is not really evidence of anything besides your weird obsession
>>
>> That was the first one I saw online next to a quote from K&R and I 
>> assumed it was from the book. In fact the example from the book is this:
>>
>>    char (*(*x())[])()
>>
>> I've no idea what the means either. The point is not that the examples 
>> are ridiculous, but that they are hard to convert to and from LTR form 
>> which is how we think. With LTR syntax it becomes utterly trivial to 
>> read or write them, no matter how complex.
>>
>> (There's a tool called CDECL that translates types from C syntax to 
>> LTR English or vice versa. It calls the C versions 'gibberish'. This 
>> is a real thing!)
>>
> 
> Putting that example in cdecl gives :
> 
> "declare x as function returning pointer to array of pointer to function 
> returning char"
> 
> To me, that is just as much gibberish as the original C.

That doesn't matter - the problem is not even knowing what it 
represents. (That it is an actual function is a surprise. That you can't 
easily tell is crazy.)

In practice there will be actual types that start to look like 
gibberish, full of *, () and [] that must be in exactly the right place.

Then maybe you want to construct a pointer to such a type or an array of 
it - where will be the new * or [] go? Where will the variable name go 
for that matter?

This should be simple enough to do in a language without needing to 
follow some back-and-forth algorithm, or use an external tool, or need 
to decompose them into multiple levels using 'typedef', or need to 
disambiguate with parentheses.

Typedef decomposition can be useful when types are genuinely complex (or 
parts of them are used/shared elsewhere), but it should not be a crutch 
for an unusable type syntax.

In any case, for me the threshold at which I need help is low. I 
couldn't do these for example:

  * Array of function pointers (say taking no params and returning void)
  * Pointer to array of function pointers
  * Function returning pointer to array (of int)
  * Pointer to function returning pointer to array (int)

My tool tells me the answers are these:

   void (*[])(void)
   void (*(*)[])(void)
   int (*(void))[]
   int (*(*)(void))[]

Still gobbledygook, sorry, and these are hardly that complex or 
unrealistic. (Other than 'pointer to array' being an uncommon C idiom. 
It's only uncommon because other C syntax choices make it ungainly to 
work with.)

Of those four lines, one is an actual function; another is a pointer to 
a function. Plus there is an array, and a pointer to something else. But 
this is not obvious at a glance, because the key part is buried in the 
middle. In an LTR scheme, it would be first.

> No syntax is 
> going to make sense of it - no amount of "ref" or "func" or pre-fix 
> array notation will help.

It will tell you what it is, which is a start. Those four examples I 
gave would look like this:

   []ref proc               # 'proc' is 'func -> void'
   ref []ref proc
   func -> ref []int
   ref func -> ref []int

Using a scheme I once proposed for C, to work side-by-side with the 
current syntax, I believe it would be like this:

   []*func()void
   *[]*func()void p, q;
   func F()*[]int {}
   *func()*[]int

Variable names would go on the right as in the second example. For that 
actual function however, an earlier name looks better and matches other 
languages.

> If you want complex types in a programming language, make them out of 
> simpler, named types that express what you are trying to achieve.  I 
> think any decent typed programming language will have a way to do this - 
> for C, "typedef" is your friend here.
> 
> (And do /not/ reply by bringing up examples you have cherry-picked from 
> code you have found, as though it was my fault they wrote 
> incomprehensible code.)

But that is going to happen. You will come across such types.

> C is not, and has never claimed to be, a beginner-friendly language.

If something is needlessly complex and unintuitive, that will be the 
case for everyone.

For beginners to C, it is just an unnecessary obstacle. I can see many 
giving up on it for that reason.

One way to simplify types is to use 'typeof' (I've no idea whether it is 
still an extension or now standardised). That means being able to write:

    typeof(int*) p, q, r;

instead of: 'int *p, *q, *r' which is too tempting to write as 'int* p, 
q, r'.

This solves another issue where the type of any declared variable is 
split up into up three pieces in three different places:

    int a, b, *c[10];


The type of 'c' comprises 'int', '*' before the name, and '[]' after the 
name. This makes it hard to share too. 'typeof' allows this (or along 
these lines):

    typeof(int*[]) x, y, z;

The type is in one tidy place, and it can be shared. This is how C 
should have worked in the first place, and it wouldn't have needed that 
untidy 'typeof()'.


>  It 
> is designed to be efficient while remaining quite a small language, 

C's type declarations are actually harder to parse than a conventional 
LTR scheme. That means a more complex compiler front-end.

[toc] | [prev] | [next] | [standalone]


#403272

FromDavid Brown <david.brown@hesbynett.no>
Date2026-10-18 16:27 +0200
Message-ID<11b2l06$16mof$1@dont-email.me>
In reply to#403269
On 18/10/2026 15:33, bart wrote:
> On 18/10/2026 12:22, David Brown wrote:
>> On 17/10/2026 13:34, bart wrote:
>>> On 17/10/2026 04:19, Dan Cross wrote:
>>>> In article <11auad0$3no1k$1@dont-email.me>, bart  <bc@freeuk.com> 
>>>> wrote:
>>>
>>>>> Those are considered more productive.
>>>>
>>>> ...and you think that's because of the syntax, and not the high
>>>> level nature of those languages?
>>>
>>> It's a combination.
>>>
>>>> Yes, the syntax is pretty gnarly; Dennis Ritchie even said as
>>>> much.  Fixed in Go and Rust, but also, I doubt you've ever in
>>>> your life had a variable of type array of array of length 8 of
>>>> a pointer to a pointer to a function returning an array of
>>>> pointers to char.  Finding the most ridiculous example you can
>>>> is not really evidence of anything besides your weird obsession
>>>
>>> That was the first one I saw online next to a quote from K&R and I 
>>> assumed it was from the book. In fact the example from the book is this:
>>>
>>>    char (*(*x())[])()
>>>
>>> I've no idea what the means either. The point is not that the 
>>> examples are ridiculous, but that they are hard to convert to and 
>>> from LTR form which is how we think. With LTR syntax it becomes 
>>> utterly trivial to read or write them, no matter how complex.
>>>
>>> (There's a tool called CDECL that translates types from C syntax to 
>>> LTR English or vice versa. It calls the C versions 'gibberish'. This 
>>> is a real thing!)
>>>
>>
>> Putting that example in cdecl gives :
>>
>> "declare x as function returning pointer to array of pointer to 
>> function returning char"
>>
>> To me, that is just as much gibberish as the original C.
> 
> That doesn't matter - the problem is not even knowing what it 
> represents. 

That is, shall we say, a strange attitude.  Gibberish (since that seems 
to be the preferred term here) is gibberish, no matter the language or 
representation, and is equally meaningless and useless.

> (That it is an actual function is a surprise. That you can't 
> easily tell is crazy.)

You can tell it very easy from the C - the final bit is parentheses.

> 
> In practice there will be actual types that start to look like 
> gibberish, full of *, () and [] that must be in exactly the right place.

Not in my code, or the code I work with - types are clear to me.  Again, 
experiences can vary.  (Of course the syntactical elements must be in 
the right place!)

> 
> Then maybe you want to construct a pointer to such a type or an array of 
> it - where will be the new * or [] go? Where will the variable name go 
> for that matter?

Use a typedef.  Or since C23, use type inference - that can save naming 
and identifying types when things get complex, and makes it easier to 
write more general code.  Like all language features, there are times 
when it is appropriate, and times when it is inappropriate.  But if 
you've got something "foo" (an object, function, type, etc.) and you 
want an array of 26 of that type, type inference makes that simple - the 
type of "foo" is "typeof(foo)" :

	typeof(foo) xs[26];

If you want a pointer to the object "foo", "auto * p = &foo;".  This is, 
IMHO, a nice addition in C23, but it would have been nicer to have had 
it earlier.  (It's been a gcc extension for a long time.)

> 
> This should be simple enough to do in a language without needing to 
> follow some back-and-forth algorithm, or use an external tool, or need 
> to decompose them into multiple levels using 'typedef', or need to 
> disambiguate with parentheses.

You just /have/ to whine, don't you?  Whenever you complain - usually 
due to ignorance or prejudice - that something is difficult or 
complicated in C, and someone tells you how it can be handled simply and 
clearly, you are unable to simply say "Okay, thanks - that's good to 
know" or "Sorry, I was wrong, I thought it was hard".  You can't help 
but call things workarounds, or complicated, or get your knickers in a 
twist about having to use a language feature that for some reason you hate.

[toc] | [prev] | [next] | [standalone]


#403282

Frombart <bc@freeuk.com>
Date2026-10-18 17:09 +0100
Message-ID<11b2qv0$19h68$1@dont-email.me>
In reply to#403272
On 18/10/2026 15:27, David Brown wrote:
> On 18/10/2026 15:33, bart wrote:
>> On 18/10/2026 12:22, David Brown wrote:

>>> To me, that is just as much gibberish as the original C.
>>
>> That doesn't matter - the problem is not even knowing what it represents. 
> 
> That is, shall we say, a strange attitude.  Gibberish (since that seems 
> to be the preferred term here) is gibberish, no matter the language or 
> representation, and is equally meaningless and useless.

'Gibberish' here refers to the representation, whether the type being 
described is made-up nonsense or real.

You may want to know what some complex type is for many reasons, you 
don't necessarily need to understand what it means or why it was used.

(For example I might come across a type in a C API that I want to 
convert to another language.)


>> (That it is an actual function is a surprise. That you can't easily 
>> tell is crazy.)
> 
> You can tell it very easy from the C - the final bit is parentheses.

Both actual function declarations and function pointers end in (...).

Function definitions will have { towards the end of the signature which 
is more of a clue.

But it is telling that pretty much every language using C-style syntax 
has chosen to use a keyword (fn, fun, func, function or other) to 
introduce a function signature.

>> In practice there will be actual types that start to look like 
>> gibberish, full of *, () and [] that must be in exactly the right place.
> 
> Not in my code, or the code I work with - types are clear to me.  Again, 
> experiences can vary.

What are you saying here, that your types never involve * () or []? That 
is hard to believe.

>  (Of course the syntactical elements must be in 
> the right place!)

Isn't that the problem? C makes it tricky. Here are two very 
straightforward declarations from my projects:

   ref []ichar stringtable               # ichar is ref char
   [N]ref proc(T) handlertable

These are the C versions:

   char *(*stringtable)[];
   void (*handlertable[N)(T);

They involve * () and [] that must all be in the right place, in the 
right nesting order. In C, parentheses are used to alter precedences as 
well as for parameter lists. This not a thing in LTR forms.

Additionally, in C, you can sometimes mix up the order of * and [], but 
since a T* value can be indexed, and a T[] value can be dereferenced, 
those errors might still compile.

So it's a problem. You're saying it isn't one if you do X, Y and Z. I'm 
  that you shouldn't need to do X, Y and Z; if you do then it's a 
language problem.


> Use a typedef.  Or since C23, use type inference - that can save naming 
> and identifying types when things get complex,

OK, that's a fifth kind of workaround! Although it is more of an 
unrelated feature.
>> This should be simple enough to do in a language without needing to 
>> follow some back-and-forth algorithm, or use an external tool, or need 
>> to decompose them into multiple levels using 'typedef', or need to 
>> disambiguate with parentheses.
> 
> You just /have/ to whine, don't you?  Whenever you complain - usually 

I thought it was, for a change, a civil exchange up to now.

I'm saying that type syntax should useful without having to resort to 
any of those four workarounds I mentioned.

If that happens because syntax choices (rather than genuine complexity) 
would otherwise result in gibberish, then that is a failing in the language.


> complicated in C, and someone tells you how it can be handled simply and 
> clearly,

No. Stuff like this is simple and clear:

   ref proc
   ref func -> void
   * func()void

Since whatever the type, you can always read off exactly what it is from 
left to right.

This is gibberish:

  void(*)(void)
  void(*)()                       (C23)

 >unable to simply say "Okay, thanks - that's good to > know" or "Sorry, 
I was wrong, I thought it was hard".  You can't help
> but call things workarounds, or complicated, or get your knickers in a 
> twist about having to use a language feature that for some reason you hate.
This one is universally disliked and even the language creators said it 
was a mistake. I didn't realise that opinion was even controversial.

[toc] | [prev] | [next] | [standalone]


#403287

FromDavid Brown <david.brown@hesbynett.no>
Date2026-10-18 21:09 +0200
Message-ID<11b35gt$1cn63$2@dont-email.me>
In reply to#403282
On 18/10/2026 18:09, bart wrote:
> On 18/10/2026 15:27, David Brown wrote:
>> On 18/10/2026 15:33, bart wrote:
>>> On 18/10/2026 12:22, David Brown wrote:
> 
>>>> To me, that is just as much gibberish as the original C.
>>>
>>> That doesn't matter - the problem is not even knowing what it 
>>> represents. 
>>
>> That is, shall we say, a strange attitude.  Gibberish (since that 
>> seems to be the preferred term here) is gibberish, no matter the 
>> language or representation, and is equally meaningless and useless.
> 
> 'Gibberish' here refers to the representation, whether the type being 
> described is made-up nonsense or real.
> 

Maybe that's what /you/ mean by it, but to me the type itself there is 
gibberish - no matter what representation you use.

> You may want to know what some complex type is for many reasons, you 
> don't necessarily need to understand what it means or why it was used.
> 
> (For example I might come across a type in a C API that I want to 
> convert to another language.)

You are just making stuff up.  C API's use different named types just 
like any other C code, so that people can understand what they are.

> 
>>> In practice there will be actual types that start to look like 
>>> gibberish, full of *, () and [] that must be in exactly the right place.
>>
>> Not in my code, or the code I work with - types are clear to me.  
>> Again, experiences can vary.
> 
> What are you saying here, that your types never involve * () or []? That 
> is hard to believe.

I'll cross off "false dichotomy" on my "Bart's logical fallacies" bingo 
card for the day.

I don't write types that look like gibberish, full of *, () and []. 
That does not mean I do not write types that contain *, () or [].

> 
>>   (Of course the syntactical elements must be in the right place!)
> 
> Isn't that the problem? C makes it tricky. Here are two very 
> straightforward declarations from my projects:
> 
>    ref []ichar stringtable               # ichar is ref char
>    [N]ref proc(T) handlertable

Are you suggesting that in your language, "stringtable" could also be 
declared as :

	ref ichar [stringtable]
or
	][ stringtable ichar ref
?

I suspect that your language also requires the syntactical elements to 
be in the right place.


> 
> These are the C versions:
> 
>    char *(*stringtable)[];
>    void (*handlertable[N)(T);
> 
> They involve * () and [] that must all be in the right place, in the 
> right nesting order. In C, parentheses are used to alter precedences as 
> well as for parameter lists. This not a thing in LTR forms.

I assume that :

	[N] ref proc(T) handlertable

and

	ref [N] proc(T) handlertable

are different?

You need to give things in the right order, or use parentheses, to get 
the right "type expression".  It's just like any other kind of expression.

The intention of the declaration syntax in C is that the declaration 
order follows usage.  If you would not write code that /uses/ a 
declaration in a particular way - like so many *, () and [] sets that it 
is hard to comprehend - then do not write /declarations/ in that way.

I don't think there is anything inherently better about C's declaration 
syntax than your declaration syntax, or others that are more 
right-to-left or more left-to-right.  There's a lot of good things to 
say about left-to-right ordering, since that is the order for reading 
(in English, anyway).  But it also means the declaration order and usage 
order are different unless your array subscript, pointer dereference and 
call operators are also all left-to-right.  My point is not that C's 
syntax is wonderful (I disagree with Kenny here), but that it works fine 
in practice, you don't have to write incomprehensible declarations, and 
that if you /do/ want to write incomprehensible declarations, you can do 
it in any language just as easily.

> 
> Additionally, in C, you can sometimes mix up the order of * and [], but 
> since a T* value can be indexed, and a T[] value can be dereferenced, 
> those errors might still compile.
> 
> So it's a problem. You're saying it isn't one if you do X, Y and Z. I'm 
>   that you shouldn't need to do X, Y and Z; if you do then it's a 
> language problem.
> 

I know you say that - you are wrong to say that.

If you want good, clear, correct C code, you need to write good, clear, 
correct C code.  That's the X, Y and Z.  And that applies to all 
languages, including yours.  The details may differ, but the principles 
do not.

You can well hold the opinion that you personally find it easier to 
write good, clear, correct code in your own language than you do in C. 
It would indeed be extraordinary if that were not the case.  But your 
opinion there does not make it fact, or mean it applies to others.

> 
>> Use a typedef.  Or since C23, use type inference - that can save 
>> naming and identifying types when things get complex,
> 
> OK, that's a fifth kind of workaround! Although it is more of an 
> unrelated feature.
>>> This should be simple enough to do in a language without needing to 
>>> follow some back-and-forth algorithm, or use an external tool, or 
>>> need to decompose them into multiple levels using 'typedef', or need 
>>> to disambiguate with parentheses.
>>
>> You just /have/ to whine, don't you?  Whenever you complain - usually 
> 
> I thought it was, for a change, a civil exchange up to now.

It was - I really am trying, but you wrote one knee-jerk comment too 
many.  I will try to reset.


[toc] | [prev] | [next] | [standalone]


#403296

Frombart <bc@freeuk.com>
Date2026-10-18 23:20 +0100
Message-ID<11b3gng$1i4mh$1@dont-email.me>
In reply to#403287
On 18/10/2026 20:09, David Brown wrote:
> On 18/10/2026 18:09, bart wrote:

>> Isn't that the problem? C makes it tricky. Here are two very 
>> straightforward declarations from my projects:
>>
>>    ref []ichar stringtable               # ichar is ref char
>>    [N]ref proc(T) handlertable
> 
> Are you suggesting that in your language, "stringtable" could also be 
> declared as :
> 
>      ref ichar [stringtable]
> or
>      ][ stringtable ichar ref
> ?

(Warning: longer post than I'd intended.)

I think you're clutching at straws.

   [] or [N] means 'array of'

   ref means 'pointer to'

   proc means 'function returning void'

   Then there is an existing standard or user type T.

You use these building blocks to construct types of any complexity. They 
are simply chained together, from left to right, ending with T at the right.

If this is part of a variable declaration, then names follow on the 
right (but syntaxes vary here).

So you know that ][ makes no sense. Neither does [stringtable] unless 
'stringtable' is a valid array-bound expression.

Example, I want a 'pointer to an array of pointer to int':

    pointer to    array of   pointer to   int       English and CDECL
       ref         []          ref        int       My syntax

So 'ref [] ref int'. Now I want to declare 3 such variables of the same 
type; no problem:

     ref [] ref int x, y, z

Now let's try the same exercise with C:

  'pointer to' is *
  'array of' is []

But how TF do they go together? Where do I start? It seems I may have to 
start from the other end:

   int

Now I add the pointer:

   int *

I know this far! Now I need to apply [] somewhere, and then another *, 
but this can't be it:

   int *[]*

OK, here's one I prepared earlier (I didn't need CDECL at all...):

   int *(*)[]

Now how about my three variables? Well, here's where the first goes, and 
CDECL agrees with me:

   int *(*x)[]

But what about y and z? It seems that, in C, the parts of typespec other 
than the final T can't be shared. So it has to be this:

   int *(*x)[], *(*y)[], *(z)[];

OK, obviously I lied; I had to use CDECL even for a fairly simple type, 
because I find C type syntax utterly impossible.

> I suspect that your language also requires the syntactical elements to 
> be in the right place.

The difference is that that is literally as simple as writing ABC. This 
is the example above:

     pointer to  array of  pointer to  int  x
     ref         []        ref         int  x

     A           B         C           D    E

The C version is:

    int *(* x)[]

    D   C A E B

Well it's either C A or A C; I don't know, and I don't care as 
thankfully I'm not going to deal with this godforsaken language any more.

> I assume that :
> 
>      [N] ref proc(T) handlertable
> 
> and
> 
>      ref [N] proc(T) handlertable
> 
> are different?

Start on the left. One is an array, the other a pointer (to an array of 
functions so it's not valid).

> You need to give things in the right order, or use parentheses, to get 
> the right "type expression"  It's just like any other kind of expression.

So, what do you think the purpose of CDECL is? Since to you, NOTHING 
about C type syntax ever appears to be a problem.

Try explaining to me in English what either of those two types are. 
You're going to describe them in left-to-right order just like CDECL.

This is also how I would think of them. Then my syntax merely 
transcribes that exactly: I can write it as fast as I can type and I 
will be 100% sure it corresponds to the type I want.

Try reading a C type spec out loud in the order it is in source code, 
complete with parentheses. It just does not work!

> The intention of the declaration syntax in C is that the declaration 
> order follows usage.

Which doesn't work either. If I declare P to be a pointer to int, then 
it will likely be used like this in an expression:

    P

I might also write &P, or *P, or P[i], or *(P + i). With a more complex 
type I might also partially dereference or index it.

Now tell me that the declaration of a struct also follows its usage!



> There's a lot of good things to say about 
> left-to-right ordering, since that is the order for reading (in English, 
> anyway).  But it also means the declaration order and usage order are 
> different unless your array subscript, pointer dereference and call 
> operators are also all left-to-right.

Is that important? People don't seem to have a problem writing 
expressions in any language, other than quibbles about post- and pre-fix 
operators.

But why is it necessary for the shape of a declaration to have anything 
to do with what happens in an expression? I've showed that that can vary 
anyway, and with some things (such as structs) it is meaningless.

It simply does not work in C, and just leads to confusion:

     int a;
     int
         *p = &a;
         *p = a;

The LHSs of those last two lines are the same, but the RHSs must be 
different. One of them is being dereferenced, and the other isn't, even 
those both /look/ as though they dereference p.

NO DEREFERENCING is done in the declaration, but it uses dereference 
syntax in something that looks exactly like an assignment.

Just admit that the whole concept was a failure. The creators have 
already done so.

>  My point is not that C's syntax 
> is wonderful (I disagree with Kenny here),

He was probably being sarcastic.


> but that it works fine in 
> practice,

It works in practice with a lot of trouble, but it is not fine.

 > you don't have to write incomprehensible declarations

My threshold is lower than yours. Just mix one * and one [], and I'm 
already lost.

That you need to disambiguate using () to distingish *[] from (*)[] is 
the wrong approach. That changes between pointer/array and 
array/pointer, but mysteriously the * and [] stay in the same order?

[toc] | [prev] | [next] | [standalone]


#403311

FromDavid Brown <david.brown@hesbynett.no>
Date2026-10-19 12:26 +0200
Message-ID<11b4r8h$1q18k$2@dont-email.me>
In reply to#403296
On 19/10/2026 00:20, bart wrote:
> On 18/10/2026 20:09, David Brown wrote:
>> On 18/10/2026 18:09, bart wrote:
> 
>>> Isn't that the problem? C makes it tricky. Here are two very 
>>> straightforward declarations from my projects:
>>>
>>>    ref []ichar stringtable               # ichar is ref char
>>>    [N]ref proc(T) handlertable
>>
>> Are you suggesting that in your language, "stringtable" could also be 
>> declared as :
>>
>>      ref ichar [stringtable]
>> or
>>      ][ stringtable ichar ref
>> ?
> 
> (Warning: longer post than I'd intended.)
> 
> I think you're clutching at straws.

I am simply mocking your suggestion that "requiring the syntactical 
elements to be in the right place" is a "problem" unique to C.

I'm snipping the irrelevant stuff about your language - I don't know why 
you bother posting it.  I also don't know why you bothered inventing new 
meaningless combinations of pointers, arrays and functions.

> 
> So, what do you think the purpose of CDECL is? Since to you, NOTHING 
> about C type syntax ever appears to be a problem.

I've never had any use of CDECL - it has no purpose to me.  I doubt if 
many people use it except for extreme artificial examples.


> 
> Just admit that the whole concept was a failure. The creators have 
> already done so.

The early C designers have said that the declaration syntax for C ended 
up more complex than it could have been, and with hindsight they would 
have picked a different syntax.  Fair enough.  But they did not "admit 
that the whole concept was a failure".  Anyone who has used C 
significantly (like anyone who has used any programming language 
significantly) has things about the language and syntax that they 
dislike and think could have been better.  But no language has had 
comparable success to that of C.  It is utterly laughable to say that 
"the whole concept of C's declaration syntax was a failure".

[toc] | [prev] | [next] | [standalone]


#403317

FromJanis Papanagnou <janis_papanagnou+ng@hotmail.com>
Date2026-10-19 15:16 +0200
Message-ID<11b557o$1kr9u$1@dont-email.me>
In reply to#403287
On 2026-10-18 21:09, David Brown wrote:
> On 18/10/2026 18:09, bart wrote:
>> [...]
[ declaration syntax ]

(I just want to comment on a [not unimportant] detail...)

> 
> You need to give things in the right order, or use parentheses, to get 
> the right "type expression".  It's just like any other kind of expression.
> 
> The intention of the declaration syntax in C is that the declaration 
> order follows usage.  [...]

I think the first part is downplaying that languages typically indeed
make a distinction between parenthesized expressions and declarations.
Quite some other languages [not from the C-heritage] that I used all
did not need to introduce "expression"-grouping for _declarations_ in
the first place given their more consistent ways to declare entities.

The second part is, as I had understood C's history, the idea behind
how it got defined; needless to say that I think that was a bad idea.
But that's what we've got! If they had dropped that requirement/idea
the declaration syntax could have become "better" (more consistent,
less cryptic, less convoluted, clearer). Now, after half a century,
we just have to live with that, and folks who have "problems" with it
should better not touch this language (or maybe not doing programming
at all). The somewhat tragic aspect is that the "declaration follows
use" idea was (IIRC) intended to _simplify_ the understanding of its
concepts and use of the language; the consequences were seemingly not
valued correctly.

Janis

[toc] | [prev] | [next] | [standalone]


#403319

FromDavid Brown <david.brown@hesbynett.no>
Date2026-10-19 15:46 +0200
Message-ID<11b56uo$1q18k$5@dont-email.me>
In reply to#403317
On 19/10/2026 15:16, Janis Papanagnou wrote:
> On 2026-10-18 21:09, David Brown wrote:
>> On 18/10/2026 18:09, bart wrote:
>>> [...]
> [ declaration syntax ]
> 
> (I just want to comment on a [not unimportant] detail...)
> 
>>
>> You need to give things in the right order, or use parentheses, to get 
>> the right "type expression".  It's just like any other kind of 
>> expression.
>>
>> The intention of the declaration syntax in C is that the declaration 
>> order follows usage.  [...]
> 
> I think the first part is downplaying that languages typically indeed
> make a distinction between parenthesized expressions and declarations.
> Quite some other languages [not from the C-heritage] that I used all
> did not need to introduce "expression"-grouping for _declarations_ in
> the first place given their more consistent ways to declare entities.
> 
> The second part is, as I had understood C's history, the idea behind
> how it got defined; needless to say that I think that was a bad idea.
> But that's what we've got! If they had dropped that requirement/idea
> the declaration syntax could have become "better" (more consistent,
> less cryptic, less convoluted, clearer). Now, after half a century,
> we just have to live with that, and folks who have "problems" with it
> should better not touch this language (or maybe not doing programming
> at all). The somewhat tragic aspect is that the "declaration follows
> use" idea was (IIRC) intended to _simplify_ the understanding of its
> concepts and use of the language; the consequences were seemingly not
> valued correctly.
> 
There are a number of things that I don't particularly like about C's 
declaration syntax, or where I think it would have been better if it 
were different.  But the "inside-to-outside" ordering is not one of 
them.  That is not because I think it is better or clearer than 
left-to-right ordering, but because when I compare to, say, Pascal, it's 
not a big issue for me.  Far bigger are :

1. People put too much into a single type declaration, rather than 
building types out of logical parts with a purpose and a name.  They 
don't do it as much as Bart likes to pretend, but some people do it too 
much for my liking.  The language doesn't force you to do that - it's 
programmer style.  IMHO there is never a reason for a "pointer to an 
array of function pointers taking int and returning void" - no matter 
what syntax is used.  Give a name to the function pointer type that 
reflects the usage (/not/ a name that reflects the definition), and 
build up from there.

2. Being able to declare variables and functions with different types in 
the same declaration.  Very occasionally, I find it convenient to 
declare more than one variable at once - "int a, b, c;".  It is rare in 
my code - generally it is one variable with an initialiser (and perhaps 
a comment) at a time.  But it is - IMHO - a bad thing that you can write 
"int a, xs[20], *p, (*f)(void);" in one declaration.

Both of these are overcome by simply not writing code that way. 
Obviously that is easy to achieve in my own code, but other people may 
use a different style.

[toc] | [prev] | [next] | [standalone]


#403322

FromJanis Papanagnou <janis_papanagnou+ng@hotmail.com>
Date2026-10-19 16:03 +0200
Message-ID<11b57vh$1kr9u$3@dont-email.me>
In reply to#403319
On 2026-10-19 15:46, David Brown wrote:
> On 19/10/2026 15:16, Janis Papanagnou wrote:
>> [...]
>>
> There are a number of things that I don't particularly like about C's 
> declaration syntax, or where I think it would have been better if it 
> were different.  But the "inside-to-outside" ordering is not one of 
> them.  That is not because I think it is better or clearer than left-to- 
> right ordering, but because when I compare to, say, Pascal, it's not a 
> big issue for me.  Far bigger are :
> 
> 1. People put too much into a single type declaration, rather than 
> building types out of logical parts with a purpose and a name. 

Yes, that can be regularly observed, and not only in case of the
declaration but generally; with known building blocks you can
construct arbitrary complex expressions incrementally, so it might
not appear as a problem at the time one writes it. But then parsing
complex expressions - say, if that code is from another person or
source - it gets difficult. (Topic reminds me Regexp expressions.)
But also program composition in general is sometimes following an
incremental growing process. Structuring is the key.

> They 
> don't do it as much as Bart likes to pretend, but some people do it too 
> much for my liking.  The language doesn't force you to do that - it's 
> programmer style.  IMHO there is never a reason for a "pointer to an 
> array of function pointers taking int and returning void" - no matter 
> what syntax is used.  Give a name to the function pointer type that 
> reflects the usage (/not/ a name that reflects the definition), and 
> build up from there.

I fully agree.

Where I obviously have a different valuation is that I saw in other
languages' contexts that there's less issues with this topic.

> 
> 2. Being able to declare variables and functions with different types in 
> the same declaration.  Very occasionally, I find it convenient to 
> declare more than one variable at once - "int a, b, c;".  It is rare in 
> my code - generally it is one variable with an initialiser (and perhaps 
> a comment) at a time. 

Absolutely the same for me.

> But it is - IMHO - a bad thing that you can write 
> "int a, xs[20], *p, (*f)(void);" in one declaration.

I agree. - But as opposed to other posters that's no serious problem;
"if it hurts, just don't do it".

> 
> Both of these are overcome by simply not writing code that way.

(I should have read your post to the end before my previous statement.)

> Obviously that is easy to achieve in my own code, but other people may 
> use a different style.

And that's why companies instantiate coding standards.

Janis

[toc] | [prev] | [next] | [standalone]


#403339

Frombart <bc@freeuk.com>
Date2026-10-19 22:28 +0100
Message-ID<11b6224$2ejik$1@dont-email.me>
In reply to#403319
On 19/10/2026 14:46, David Brown wrote:
> On 19/10/2026 15:16, Janis Papanagnou wrote:
>> On 2026-10-18 21:09, David Brown wrote:
>>> On 18/10/2026 18:09, bart wrote:
>>>> [...]
>> [ declaration syntax ]
>>
>> (I just want to comment on a [not unimportant] detail...)
>>
>>>
>>> You need to give things in the right order, or use parentheses, to 
>>> get the right "type expression".  It's just like any other kind of 
>>> expression.
>>>
>>> The intention of the declaration syntax in C is that the declaration 
>>> order follows usage.  [...]
>>
>> I think the first part is downplaying that languages typically indeed
>> make a distinction between parenthesized expressions and declarations.
>> Quite some other languages [not from the C-heritage] that I used all
>> did not need to introduce "expression"-grouping for _declarations_ in
>> the first place given their more consistent ways to declare entities.
>>
>> The second part is, as I had understood C's history, the idea behind
>> how it got defined; needless to say that I think that was a bad idea.
>> But that's what we've got! If they had dropped that requirement/idea
>> the declaration syntax could have become "better" (more consistent,
>> less cryptic, less convoluted, clearer). Now, after half a century,
>> we just have to live with that, and folks who have "problems" with it
>> should better not touch this language (or maybe not doing programming
>> at all). The somewhat tragic aspect is that the "declaration follows
>> use" idea was (IIRC) intended to _simplify_ the understanding of its
>> concepts and use of the language; the consequences were seemingly not
>> valued correctly.
>>
> There are a number of things that I don't particularly like about C's 
> declaration syntax, or where I think it would have been better if it 
> were different.  But the "inside-to-outside" ordering is not one of 
> them.  That is not because I think it is better or clearer than left-to- 
> right ordering, but because when I compare to, say, Pascal, it's not a 
> big issue for me.  Far bigger are :
> 
> 1. People put too much into a single type declaration, rather than 
> building types out of logical parts with a purpose and a name.  They 
> don't do it as much as Bart likes to pretend, but some people do it too 
> much for my liking.  The language doesn't force you to do that - it's 
> programmer style.  IMHO there is never a reason for a "pointer to an 
> array of function pointers taking int and returning void" - no matter 
> what syntax is used.

Then you have a peculiar and restricted coding style.

(Funny that when I suggest that nested loop breaks are uncommon, 
everyone says I'm wrong! Some even write 200-line made-up examples to 
prove their point.)

These are two actual function pointer arrays from my projects (not C):

     []ref proc hosthandlers = ...

     [pclnames.len]ref proc(pcl) px_handlertable

There is no reason to abstract away that function pointer type.

You probably do so in C /because/ the type involves * () and [] but have 
somehow persuaded yourself that it just better that way.

Note that 'pcl' in my example /is/ a typedef; here it makes sense as it 
is used in 100s of places. This function pointer occurs in only one place.

(The C version looks like: 'void (*name[N]))T)'. I used a tool and 
transcribed it, then I double-checked and found I'd written '(*name)[N]' 
not '(*name[N])'; I wouldn't have noticed.)

BTW what name would be given to such a function pointer type? There is 
nothing obvious other than 'funcptr', but suppose there is more than one 
in scope?

Something else strikes me about breaking up a complex type-decl sequence 
into a chain of typedefs: if you take that list of typedefs, and rotate 
it 90 degrees c/w, you have something that resembles the LTR representation!

[toc] | [prev] | [next] | [standalone]


#403370

FromDavid Brown <david.brown@hesbynett.no>
Date2026-10-20 10:01 +0200
Message-ID<11b774o$2m8c9$3@dont-email.me>
In reply to#403339
On 19/10/2026 23:28, bart wrote:
> On 19/10/2026 14:46, David Brown wrote:
>> On 19/10/2026 15:16, Janis Papanagnou wrote:
>>> On 2026-10-18 21:09, David Brown wrote:
>>>> On 18/10/2026 18:09, bart wrote:
>>>>> [...]
>>> [ declaration syntax ]
>>>
>>> (I just want to comment on a [not unimportant] detail...)
>>>
>>>>
>>>> You need to give things in the right order, or use parentheses, to 
>>>> get the right "type expression".  It's just like any other kind of 
>>>> expression.
>>>>
>>>> The intention of the declaration syntax in C is that the declaration 
>>>> order follows usage.  [...]
>>>
>>> I think the first part is downplaying that languages typically indeed
>>> make a distinction between parenthesized expressions and declarations.
>>> Quite some other languages [not from the C-heritage] that I used all
>>> did not need to introduce "expression"-grouping for _declarations_ in
>>> the first place given their more consistent ways to declare entities.
>>>
>>> The second part is, as I had understood C's history, the idea behind
>>> how it got defined; needless to say that I think that was a bad idea.
>>> But that's what we've got! If they had dropped that requirement/idea
>>> the declaration syntax could have become "better" (more consistent,
>>> less cryptic, less convoluted, clearer). Now, after half a century,
>>> we just have to live with that, and folks who have "problems" with it
>>> should better not touch this language (or maybe not doing programming
>>> at all). The somewhat tragic aspect is that the "declaration follows
>>> use" idea was (IIRC) intended to _simplify_ the understanding of its
>>> concepts and use of the language; the consequences were seemingly not
>>> valued correctly.
>>>
>> There are a number of things that I don't particularly like about C's 
>> declaration syntax, or where I think it would have been better if it 
>> were different.  But the "inside-to-outside" ordering is not one of 
>> them.  That is not because I think it is better or clearer than left- 
>> to- right ordering, but because when I compare to, say, Pascal, it's 
>> not a big issue for me.  Far bigger are :
>>
>> 1. People put too much into a single type declaration, rather than 
>> building types out of logical parts with a purpose and a name.  They 
>> don't do it as much as Bart likes to pretend, but some people do it 
>> too much for my liking.  The language doesn't force you to do that - 
>> it's programmer style.  IMHO there is never a reason for a "pointer to 
>> an array of function pointers taking int and returning void" - no 
>> matter what syntax is used.
> 
> Then you have a peculiar and restricted coding style.

I don't believe so, no - at least, not compared to other code in my 
field.  It /is/ restricted, but so is everyone's coding style.

> 
> (Funny that when I suggest that nested loop breaks are uncommon, 
> everyone says I'm wrong! Some even write 200-line made-up examples to 
> prove their point.)

I don't remember "everyone" saying you were wrong to say that nested 
loop breaks are uncommon - in fact, I don't remember /anyone/ saying 
that was wrong.  A few people have suggested that they personally would 
often find some kind of multi-level break useful, but I do not believe 
many people think it is common, as a fraction of all C code they write.

(You really should cut down on the paranoia and the exaggerations.)

> 
> These are two actual function pointer arrays from my projects (not C):
> 
>      []ref proc hosthandlers = ...
> 
>      [pclnames.len]ref proc(pcl) px_handlertable
> 
> There is no reason to abstract away that function pointer type.
> 
> You probably do so in C /because/ the type involves * () and [] but have 
> somehow persuaded yourself that it just better that way.

Do you hear that whooshing noise?  It is the sound of the point flying 
far above your head.

Here is an example of some sensible function typedefs, all from 
third-party code (so not my "peculiar" style)

struct tmrTimerControl;
typedef struct tmrTimerControl * TimerHandle_t;
typedef void (*TimerCallbackFunction_t)( TimerHandle_t xTimer );

TimerHandle_t xTimerCreate(  const char * const pcTimerName,
                  TickType_t xTimerPeriodInTicks,
                  UBaseType_t uxAutoReload,
                  void * pvTimerID,
                  TimerCallbackFunction_t pxCallbackFunction );

typedef void (*TaskFunction_t)( void * );
typedef BaseType_t (*TaskHookFunction_t)( void * );

typedef void  (*altcp_err_fn)(void *arg, err_t err);


typedef void (*lwip_thread_fn)(void *arg);
typedef void (*tcpip_init_done_fn)(void *arg);
typedef void (*tcpip_callback_fn)(void *ctx);
typedef void (* sys_timeout_handler)(void *arg);
typedef void (*dns_found_callback)(const char *name,
                  const ip_addr_t *ipaddr, void *callback_arg);

Ask yourself why the typedefs are used.  Look at the /names/.  Those 
last four are all from the same network stack library, and are all 
typedefs for "void (*)(void*)".  That function type could easily have 
been written out in full in each declaration that used them.  Yet the 
actual functions using them specifically choose to use the type names 
that are relevant at the time.


Do you really need me to spoon-feed you the reasons why this is all a 
good idea?  People name types because it makes their code clearer, more 
robust, more flexible, more portable.

> 
> Note that 'pcl' in my example /is/ a typedef; here it makes sense as it 
> is used in 100s of places. This function pointer occurs in only one place.

I'm sorry, I had mistaken you for a programmer who wanted to write good, 
clear programs.  Naming things is not a shortcut to save keypresses.

> 
> (The C version looks like: 'void (*name[N]))T)'. I used a tool and 
> transcribed it, then I double-checked and found I'd written '(*name)[N]' 
> not '(*name[N])'; I wouldn't have noticed.)
> 
> BTW what name would be given to such a function pointer type? There is 
> nothing obvious other than 'funcptr', but suppose there is more than one 
> in scope?

I have no idea what your code is supposed to do, so I have no idea what 
names would be good.  Presumably you /do/ know what it is for - such as 
what "pcl" means - so /you/ pick good names.  Maybe "host_handler_fn" ?

> 
> Something else strikes me about breaking up a complex type-decl sequence 
> into a chain of typedefs: if you take that list of typedefs, and rotate 
> it 90 degrees c/w, you have something that resembles the LTR 
> representation!
> 

If the details of the declaration syntax matter, you are doing it wrong.



[toc] | [prev] | [next] | [standalone]


#403374

Frombart <bc@freeuk.com>
Date2026-10-20 12:41 +0100
Message-ID<11b7k22$2v8e5$1@dont-email.me>
In reply to#403370
On 20/10/2026 09:01, David Brown wrote:
> On 19/10/2026 23:28, bart wrote:

>> (Funny that when I suggest that nested loop breaks are uncommon, 
>> everyone says I'm wrong! Some even write 200-line made-up examples to 
>> prove their point.)
> 
> I don't remember "everyone" saying you were wrong to say that nested 
> loop breaks are uncommon - in fact, I don't remember /anyone/ saying 
> that was wrong. 

(There was a LOT of antipathy towards my idea to fix the common case of 
'loop-break' clashing with 'switch-break', BECAUSE it did not fix the 
problem of nested loop-break, which is uncommon, even though that wasn't 
the aim.)

>> There is no reason to abstract away that function pointer type.
>>
>> You probably do so in C /because/ the type involves * () and [] but 
>> have somehow persuaded yourself that it just better that way.
> 
> Do you hear that whooshing noise?  It is the sound of the point flying 
> far above your head.
> 
> Here is an example of some sensible function typedefs, all from third- 
> party code (so not my "peculiar" style)
> 

> typedef void (*TimerCallbackFunction_t)( TimerHandle_t xTimer );
> 
> TimerHandle_t xTimerCreate(  const char * const pcTimerName,
>                   TickType_t xTimerPeriodInTicks,
>                   UBaseType_t uxAutoReload,
>                   void * pvTimerID,
>                   TimerCallbackFunction_t pxCallbackFunction );
> 

> typedef void (*lwip_thread_fn)(void *arg);
> typedef void (*tcpip_init_done_fn)(void *arg);
> typedef void (*tcpip_callback_fn)(void *ctx);
> typedef void (* sys_timeout_handler)(void *arg);
> typedef void (*dns_found_callback)(const char *name,
>                   const ip_addr_t *ipaddr, void *callback_arg);


This is the kind of C I find hard to read. There are lots of typedefs 
but few uses of those typedefs that I can see, so I don't know how much 
difference they make.

Except here:

  typedef void (*TimerCallbackFunction_t)( TimerHandle_t xTimer );

  TimerHandle_t xTimerCreate(  const char * const pcTimerName,
                    TickType_t xTimerPeriodInTicks,
                    UBaseType_t uxAutoReload,
                    void * pvTimerID,
                    TimerCallbackFunction_t pxCallbackFunction );

Without the typedef, I believe it would just be this:

TimerHandle_t xTimerCreate(  const char * const pcTimerName,
                  TickType_t xTimerPeriodInTicks,
                  UBaseType_t uxAutoReload,
                  void * pvTimerID,
                  void (*pxCallbackFunction)(TimerHandle_t));

(I've left out the parameter name of the callback function, as I don't 
believe it is that useful.

I've left in the regular parameter names, even though C doesn't need 
them, but they are quite heavy - you don't really need those 
Hungarian-style prefixes.)

Well, I guess this buys you one thing: the parameter name for the last 
parameter is to the right of its type, rather than be inside it. But a C 
expert should not be fazed by that.

Here is the same function as I might write it in an alternative syntax.

I've kept the same names, but changed case-style and removed prefixes 
and suffixes. I've capitalised user-type names:

func TimerCreate(                 # (retain case if FFI import)
     ichar     timername,
     Ticktype  timerperiodinticks,
     Ubasetype autoreload,
     ref void  timerid,
     ref proc(Timerhandle) callbackfn)

In this form, it's hard to see what benefit a typedef would give for 
that last parameter; it is simple enough.


> Ask yourself why the typedefs are used.  Look at the /names/.  Those 
> last four are all from the same network stack library, and are all 
> typedefs for "void (*)(void*)".

Until you mentioned it, I hadn't noticed. So typedef has done a good job 
of hiding that useful fact! But looking more closely, it is the first 
four of the last five.

Let's take one:

  typedef void (*lwip_thread_fn)(void *arg);

That 'arg' is not much use for a start (other than being a hint that 
this particular (...) is where the parameters go).

So, maybe this is used like this:

   void F(lwip_thread_fn lwip_thread_callback);

Here you have two identifiers imparting the sort kind of information; a 
tautology.

If that function pointer pattern is common, or recurs in a suite of 
functions, I might also have used a typedef, but with a common name. 
Then only one would be needed, say:

  typedef void (*stack_callbackfn)(void);

I might have done the same in that alternate syntax as it would start to 
get cluttery: 'ref proc(ref void)', but also in order to define that 
common pattern in one place.

>> Note that 'pcl' in my example /is/ a typedef; here it makes sense as 
>> it is used in 100s of places. This function pointer occurs in only one 
>> place.
> 
> I'm sorry, I had mistaken you for a programmer who wanted to write good, 
> clear programs.  Naming things is not a shortcut to save keypresses.

Isn't that one of the main uses of typedefs? So as to give a handy, 
'euphonious' one-token alias to an elaborate typedef.

It also allows you to change the type in one place without having to 
update hundreds of instances.

It also allows the type to be opaque.

Saving keypresses is bonus benefit, but if it is shorter, then it can 
also help readability as other critical elements are not overshadowed.

So I'm not sure what objection you have to this particular use of it.

Here is the one place I do remember using typedef for a function pointer 
(from an old project, not in C):

     type fnptr = ref proc

     repeat
         (fnptr(pcptr^))^()
     until stopped

It's used as a cast, but reason I have it is because with simple cast 
syntax, which is 'T(X)', the meaning without it would be ambiguous (a 
grammar issue that I might fix one day).

Rather than fallback to standard cast syntax (which is 'cast(X, T)'), 
this was tidier.

>> BTW what name would be given to such a function pointer type?

> I have no idea what your code is supposed to do,

It's a table of function pointers! All sharing the same signature.

That's pretty generic. Is it really that hard to guess? You don't need 
to know what they do, other than at some point they will be called as 
handlertable[i](arg).

[toc] | [prev] | [next] | [standalone]


#403377

FromDavid Brown <david.brown@hesbynett.no>
Date2026-10-20 14:58 +0200
Message-ID<11b7ogt$2m8c9$5@dont-email.me>
In reply to#403374
On 20/10/2026 13:41, bart wrote:
> On 20/10/2026 09:01, David Brown wrote:
>> On 19/10/2026 23:28, bart wrote:
> 
>>> (Funny that when I suggest that nested loop breaks are uncommon, 
>>> everyone says I'm wrong! Some even write 200-line made-up examples to 
>>> prove their point.)
>>
>> I don't remember "everyone" saying you were wrong to say that nested 
>> loop breaks are uncommon - in fact, I don't remember /anyone/ saying 
>> that was wrong. 
> 
> (There was a LOT of antipathy towards my idea to fix the common case of 
> 'loop-break' clashing with 'switch-break', BECAUSE it did not fix the 
> problem of nested loop-break, which is uncommon, even though that wasn't 
> the aim.)

It is correct that the idea of having a "loop-break" statement was 
considered and quickly rejected by people looking at multi-level breaks. 
  It would be silly, when first making a language change to handle one 
type of coding situation, to pick a special case when a more general 
solution could be used.  I don't think anyone was arguing that the 
desire for breaking out of nested loops was /common/, but I don't think 
many people felt breaking out of a switch in a loop was common either. 
Both needs are relatively rare in general C coding.

But while the consensus is that a "loop-break" statement is not worth 
adding to C, that is a completely different thing than claiming that 
"everyone" said you were wrong to say nested loop breaks are common!

So - again - please cut the paranoia and exaggerations, and /read/ what 
people write, rather than the conspiracies you imagine they write.

> 
>>> There is no reason to abstract away that function pointer type.
>>>
>>> You probably do so in C /because/ the type involves * () and [] but 
>>> have somehow persuaded yourself that it just better that way.
>>
>> Do you hear that whooshing noise?  It is the sound of the point flying 
>> far above your head.
>>
>> Here is an example of some sensible function typedefs, all from third- 
>> party code (so not my "peculiar" style)
>>
> 
>> typedef void (*TimerCallbackFunction_t)( TimerHandle_t xTimer );
>>
>> TimerHandle_t xTimerCreate(  const char * const pcTimerName,
>>                   TickType_t xTimerPeriodInTicks,
>>                   UBaseType_t uxAutoReload,
>>                   void * pvTimerID,
>>                   TimerCallbackFunction_t pxCallbackFunction );
>>
> 
>> typedef void (*lwip_thread_fn)(void *arg);
>> typedef void (*tcpip_init_done_fn)(void *arg);
>> typedef void (*tcpip_callback_fn)(void *ctx);
>> typedef void (* sys_timeout_handler)(void *arg);
>> typedef void (*dns_found_callback)(const char *name,
>>                   const ip_addr_t *ipaddr, void *callback_arg);
> 
> 
> This is the kind of C I find hard to read. There are lots of typedefs 
> but few uses of those typedefs that I can see, so I don't know how much 
> difference they make.

Yes, sorry, I should have posted tens of thousands of lines of C code 
using these.  I'm sure that would have made things much clearer than a 
couple of extracted examples.


But let us take a concrete example.  These network functions are from 
the LWIP network stack, which is designed to be used on small embedded 
systems that may not have any kind of OS - so it uses call-backs for 
asynchronous programming.

An example API function is this :

err_t dns_gethostbyname(const char *hostname, ip_addr_t *addr,
                         dns_found_callback found, void *callback_arg)

The returned "err_t" can be "ERR_OK" (indicating the "hostname" is in 
the DNS cache and *addr is set to the IP), "ERR_ARG" for argument 
errors, or "ERR_INPROGRESS" to indicate that the stack is looking up the 
DNS name, and will call the callback when there is a final result or 
timeout.


Without typedef's, that function signature would be something like :

signed char dns_gethostbyname(const char *hostname, struct ip_addr
	*addr, void (*found)(const char *name,	const struct ip_addr
	*ipaddr, void *callback_arg), void *callback_arg);


Do you expect anyone to believe you if you claim this is easier to read 
than the real declaration using typedefs?  I'll believe you if you say 
you find the original hard to read - but not if you claim the 
"untypedef'ed" version is clearer.

The typedefs let you understand the code piece by piece.

A "dns_found_callback" is a callback function called when a dns lookup 
has finished - that's clear from its name.  It is called with arguments 
the name that was looked up, the ip address that was found, and a 
user-supplied extra argument that can be used as you want.  That's 
simple and clear.

The "dns_gethostbyname" function is a function to find a host's IP 
address, given its name - that's clear from the name.  It is called with 
the name to look up, a pointer to a place to store the resulting IP 
address, a callback function of type "dns_found_callback" if it can't 
answer immediately, and a user-supplied extra argument for the callback 
function.  This is again, simple and clear.


> 
> Except here:
> 
>   typedef void (*TimerCallbackFunction_t)( TimerHandle_t xTimer );
> 
>   TimerHandle_t xTimerCreate(  const char * const pcTimerName,
>                     TickType_t xTimerPeriodInTicks,
>                     UBaseType_t uxAutoReload,
>                     void * pvTimerID,
>                     TimerCallbackFunction_t pxCallbackFunction );
> 
> Without the typedef, I believe it would just be this:
> 
> TimerHandle_t xTimerCreate(  const char * const pcTimerName,
>                   TickType_t xTimerPeriodInTicks,
>                   UBaseType_t uxAutoReload,
>                   void * pvTimerID,
>                   void (*pxCallbackFunction)(TimerHandle_t));
> 
> (I've left out the parameter name of the callback function, as I don't 
> believe it is that useful.
> 
> I've left in the regular parameter names, even though C doesn't need 
> them, but they are quite heavy - you don't really need those Hungarian- 
> style prefixes.)

/C/ does not need the parameter names - /programmers/ need them, because 
they tell you want they do.  Omitting them is as smart as calling all 
your functions "foo1", "foo2", etc., just because C does not require 
sensible names.

The point of using typedefs here is that they make the xTimerCreate() 
function declaration simpler and clearer, and it tells the programmer 
what is going on.  It tells the programmer that the parameter is a 
TimerCallbackFunction - not just any old function that takes a 
TimerHandle_t parameter.  The programmer knows that a suitable argument 
is their "flash_the_green_led" function, but not their 
"initialise_timer" function that happens coincidentally to have the same 
signature.

> 
> Well, I guess this buys you one thing: the parameter name for the last 
> parameter is to the right of its type, rather than be inside it. But a C 
> expert should not be fazed by that.
> 
> Here is the same function as I might write it in an alternative syntax.
> 
> I've kept the same names, but changed case-style and removed prefixes 
> and suffixes. I've capitalised user-type names:
> 
> func TimerCreate(                 # (retain case if FFI import)
>      ichar     timername,
>      Ticktype  timerperiodinticks,
>      Ubasetype autoreload,
>      ref void  timerid,
>      ref proc(Timerhandle) callbackfn)
> 
> In this form, it's hard to see what benefit a typedef would give for 
> that last parameter; it is simple enough.

I am glad I don't have to work with your code - whatever language you 
use.  The number one skill for programmers is picking good names, and 
you flumped that one.

> 
> 
>> Ask yourself why the typedefs are used.  Look at the /names/.  Those 
>> last four are all from the same network stack library, and are all 
>> typedefs for "void (*)(void*)".
> 
> Until you mentioned it, I hadn't noticed. So typedef has done a good job 
> of hiding that useful fact! But looking more closely, it is the first 
> four of the last five.

It is not "hiding a useful fact" - it is abstracting away from an 
unintended coincidence.  My own preference is to use stronger types, 
precisely so that things could not be mixed up.  I'd have :

typedef struct { void * arg; } lwip_thread_arg;
typedef void (*lwip_thread_fn)(lwip_thread_arg * arg);

typedef struct { void * arg; } tcpip_init_done_arg;
typedef void (*tcpip_init_done_fn)(tcpip_init_done_arg * arg);

(If I were to go back in time and change things in C, I'd make "typedef" 
define new types, not type aliases.)

> 
> Let's take one:
> 
>   typedef void (*lwip_thread_fn)(void *arg);
> 
> That 'arg' is not much use for a start (other than being a hint that 
> this particular (...) is where the parameters go).
> 
> So, maybe this is used like this:
> 
>    void F(lwip_thread_fn lwip_thread_callback);
> 
> Here you have two identifiers imparting the sort kind of information; a 
> tautology.

You don't need to duplicate the name when it is not helpful - and you 
certainly should not do so when it is clearly wrong (a thread function 
is not a callback function, even if the signatures match).  A real 
function signature using this type is :

sys_thread_t sys_thread_new(const char *name, lwip_thread_fn thread,
                     void *arg, int stacksize, int prio);

> 
> If that function pointer pattern is common, or recurs in a suite of 
> functions, I might also have used a typedef, but with a common name. 
> Then only one would be needed, say:
> 
>   typedef void (*stack_callbackfn)(void);

/You/ might have written that, but it would be significantly worse code. 
  You are obsessed with the details of the syntax of the type, instead 
of looking at what it represents and what it will mean in the code.

There can be occasional uses for "generic" names, like :

	typedef void (*fp_void)(void);

just as there are uses for generic "int" types rather than types like 
"size_t", "int32_t", "TickType_t", etc.  But using well-named types 
conveys vital information.  Using badly named types, or re-using named 
types inappropriately, makes code worse.

> 
> I might have done the same in that alternate syntax as it would start to 
> get cluttery: 'ref proc(ref void)', but also in order to define that 
> common pattern in one place.
> 
>>> Note that 'pcl' in my example /is/ a typedef; here it makes sense as 
>>> it is used in 100s of places. This function pointer occurs in only 
>>> one place.
>>
>> I'm sorry, I had mistaken you for a programmer who wanted to write 
>> good, clear programs.  Naming things is not a shortcut to save 
>> keypresses.
> 
> Isn't that one of the main uses of typedefs? So as to give a handy, 
> 'euphonious' one-token alias to an elaborate typedef.

No, it should not be your main use of typedef - but it might 
occasionally be a reason.

> 
> It also allows you to change the type in one place without having to 
> update hundreds of instances.
> 
> It also allows the type to be opaque.

Now you are beginning to understand!  Yes, these are two key reasons for 
typedefs.

> 
> Saving keypresses is bonus benefit, but if it is shorter, then it can 
> also help readability as other critical elements are not overshadowed.

I agree - but that is a bonus, not an aim in itself.  There is a balance 
to be found between being too verbose, and not being explicit enough. 
The "right" balance point depends very much on the context, the code, 
and the target audience.

> 
> So I'm not sure what objection you have to this particular use of it.

I don't object to having shorter aliases when appropriate.  I object to 
it as a prime motivation.

> 
> Here is the one place I do remember using typedef for a function pointer 
> (from an old project, not in C):
> 
>      type fnptr = ref proc
> 
>      repeat
>          (fnptr(pcptr^))^()
>      until stopped
> 
> It's used as a cast, but reason I have it is because with simple cast 
> syntax, which is 'T(X)', the meaning without it would be ambiguous (a 
> grammar issue that I might fix one day).
> 
> Rather than fallback to standard cast syntax (which is 'cast(X, T)'), 
> this was tidier.
> 
>>> BTW what name would be given to such a function pointer type?
> 
>> I have no idea what your code is supposed to do,
> 
> It's a table of function pointers! All sharing the same signature.

I can't see any use in a table of function pointers.  I can see a use in 
a table of event handlers, a table of timer callback functions, a table 
of state machine state handlers, etc.

It's like saying you have an array of "int".  No, you have an array of 
the days in each month of the year, or an array of timestamps of 
keypresses, or an array of the cost of different coffee mugs.

> 
> That's pretty generic. Is it really that hard to guess? You don't need 
> to know what they do, other than at some point they will be called as 
> handlertable[i](arg).
> 

That is why I guessed "host_handler_fn" as a name, but you snipped that.

[toc] | [prev] | [next] | [standalone]


#403393

FromKeith Thompson <Keith.S.Thompson+u@gmail.com>
Date2026-10-20 17:05 -0700
Message-ID<11b8vl0$3g2gf$1@kst.eternal-september.org>
In reply to#403377
David Brown <david.brown@hesbynett.no> writes:
[...]
> Without typedef's, that function signature would be something like :
>
> signed char dns_gethostbyname(const char *hostname, struct ip_addr
> 	*addr, void (*found)(const char *name,	const struct ip_addr
> 	*ipaddr, void *callback_arg), void *callback_arg);

I might write that as:

    signed char dns_gethostbyname(
        const char *hostname,
        struct ip_addr *addr,
        void (*found)(
            const char *name,
            const struct ip_addr *ipaddr,
            void *callback_arg
        ),
        void *callback_arg
    );

so the indentation and structure reflects the semantics.  I find
that much clearer than your version.  (I'm not commenting on the
merits of typedefs.)

-- 
Keith Thompson (The_Other_Keith) Keith.S.Thompson+u@gmail.com
void Void(void) { Void(); } /* The recursive call of the void */

[toc] | [prev] | [next] | [standalone]


#403406

FromDavid Brown <david.brown@hesbynett.no>
Date2026-10-21 12:45 +0200
Message-ID<11ba54b$3peq3$2@dont-email.me>
In reply to#403393
On 21/10/2026 02:05, Keith Thompson wrote:
> David Brown <david.brown@hesbynett.no> writes:
> [...]
>> Without typedef's, that function signature would be something like :
>>
>> signed char dns_gethostbyname(const char *hostname, struct ip_addr
>> 	*addr, void (*found)(const char *name,	const struct ip_addr
>> 	*ipaddr, void *callback_arg), void *callback_arg);
> 
> I might write that as:
> 
>      signed char dns_gethostbyname(
>          const char *hostname,
>          struct ip_addr *addr,
>          void (*found)(
>              const char *name,
>              const struct ip_addr *ipaddr,
>              void *callback_arg
>          ),
>          void *callback_arg
>      );
> 
> so the indentation and structure reflects the semantics.  I find
> that much clearer than your version.  (I'm not commenting on the
> merits of typedefs.)
> 

Certainly the indentation makes the unpleasant non-typedef'ed version 
clearer.  And /if/ I had to write that function signature without 
typedefs, I would structure it like you had - but I can't think of any 
reason I would ever have to do so.

[toc] | [prev] | [next] | [standalone]


#403395

Frombart <bc@freeuk.com>
Date2026-10-21 02:04 +0100
Message-ID<11b933e$3h3d0$1@dont-email.me>
In reply to#403377
On 20/10/2026 13:58, David Brown wrote:
> On 20/10/2026 13:41, bart wrote:

> But let us take a concrete example.  These network functions are from 
> the LWIP network stack, which is designed to be used on small embedded 
> systems that may not have any kind of OS - so it uses call-backs for 
> asynchronous programming.
> 
> An example API function is this :
> 
> err_t dns_gethostbyname(const char *hostname, ip_addr_t *addr,
>                          dns_found_callback found, void *callback_arg)
> 
> The returned "err_t" can be "ERR_OK" (indicating the "hostname" is in 
> the DNS cache and *addr is set to the IP), "ERR_ARG" for argument 
> errors, or "ERR_INPROGRESS" to indicate that the stack is looking up the 
> DNS name, and will call the callback when there is a final result or 
> timeout.
> 
> 
> Without typedef's, that function signature would be something like :
> 
> signed char dns_gethostbyname(const char *hostname, struct ip_addr
>      *addr, void (*found)(const char *name,    const struct ip_addr
>      *ipaddr, void *callback_arg), void *callback_arg);
> 
> 
> Do you expect anyone to believe you if you claim this is easier to read 
> than the real declaration using typedefs?  I'll believe you if you say 
> you find the original hard to read - but not if you claim the 
> "untypedef'ed" version is clearer.

Neither are great. But let's first lay them out better:

  err_t
     dns_gethostbyname(
       const char *hostname,
       ip_addr_t  *addr,
       dns_found_callback found,
       void       *callback_arg
     );

Here, one problem is that there are 3 types that I don't know and would 
have to look up. The long version at least has all the info in one place:

  signed char
     dns_gethostbyname(
       const char     *hostname,
       struct ip_addr *addr,
       void (*found)(const char *name, const struct ip_addr *ipaddr, 
void *callback_arg),
       void           *callback_arg
     );

That signed char return is unusual; why not 'int'? (How would you even 
print an 'err_t' value anyway)?

That 'ip_addr_t' turns out to be a struct. For those I would use 
typedefs anyway; I rarely use struct tags and you have to invent an 
identifier in either case.

Then we come to the function pointer, which is a quite a chunky one, but 
let's work with it. Here, I would question whether you really need those 
types in there, and especially those names.

Presumably you have a regular function of your own with the same 
signature? You anyway never directly 'call' this parameter with 
arguments; you just pass it the address of your handler.

Or do you use that typedef as documentation?

Where does the info come from anyway; does the library export a suitable 
typedef? In that case you might as well use it. But if not, info must 
come from elsewhere.

Anyway with some tweaks in place, using the struct typedef and using an 
inline function pointer type, it would look like this:

  signed char
     dns_gethostbyname(
       const char *hostname,
       IP_addr    *addr,
       void      (*found)(char*, IP_addr*, void *),
       void       *arg
    );

In this form, it is not wildly different from your short version.

So I would look at other ways of tidying up before resorting to 
extraneous typedefs.

But here, there may well be an extra reason to use a callback typedef; I 
don't have the full details.

[toc] | [prev] | [next] | [standalone]


#403407

FromDavid Brown <david.brown@hesbynett.no>
Date2026-10-21 13:21 +0200
Message-ID<11ba78m$3peq3$3@dont-email.me>
In reply to#403395
On 21/10/2026 03:04, bart wrote:
> On 20/10/2026 13:58, David Brown wrote:
>> On 20/10/2026 13:41, bart wrote:
> 
>> But let us take a concrete example.  These network functions are from 
>> the LWIP network stack, which is designed to be used on small embedded 
>> systems that may not have any kind of OS - so it uses call-backs for 
>> asynchronous programming.
>>
>> An example API function is this :
>>
>> err_t dns_gethostbyname(const char *hostname, ip_addr_t *addr,
>>                          dns_found_callback found, void *callback_arg)
>>
>> The returned "err_t" can be "ERR_OK" (indicating the "hostname" is in 
>> the DNS cache and *addr is set to the IP), "ERR_ARG" for argument 
>> errors, or "ERR_INPROGRESS" to indicate that the stack is looking up 
>> the DNS name, and will call the callback when there is a final result 
>> or timeout.
>>
>>
>> Without typedef's, that function signature would be something like :
>>
>> signed char dns_gethostbyname(const char *hostname, struct ip_addr
>>      *addr, void (*found)(const char *name,    const struct ip_addr
>>      *ipaddr, void *callback_arg), void *callback_arg);
>>
>>
>> Do you expect anyone to believe you if you claim this is easier to 
>> read than the real declaration using typedefs?  I'll believe you if 
>> you say you find the original hard to read - but not if you claim the 
>> "untypedef'ed" version is clearer.
> 
> Neither are great. But let's first lay them out better:
> 
>   err_t
>      dns_gethostbyname(
>        const char *hostname,
>        ip_addr_t  *addr,
>        dns_found_callback found,
>        void       *callback_arg
>      );

OK.  I'd not write it that way, and I don't think it is better, but 
that's a subjective opinion.

(As a note on layout, the original code is not as line-length restricted 
as a Usenet post, and the code has Doxygen comments.  That means that 
there is additional comment information in header, and that the user 
documentation, which is the normal way to get details of the API, is 
generated html.)

> 
> Here, one problem is that there are 3 types that I don't know and would 
> have to look up.

Incorrect.

There are three types that are not standard C types, but if you are 
using this function, you don't have to look them up.  You generally 
don't need to know what they are - indeed, knowing their details can 
easily lead to writing poorer and less adaptable or portable code.  Only 
information about the callback function type is of interest, and even 
then it is only marginal - you look it up once when writing an 
appropriate callback function, taking negligible effort compared to 
writing the code itself.  And because it is a named type, you know 
immediately that your function is suitable for other use-cases of that 
specific named type, such as for related dns lookup APIs.

> The long version at least has all the info in one place:
> 
>   signed char
>      dns_gethostbyname(
>        const char     *hostname,
>        struct ip_addr *addr,
>        void (*found)(const char *name, const struct ip_addr *ipaddr, 
> void *callback_arg),
>        void           *callback_arg
>      );
> 
> That signed char return is unusual; why not 'int'? (How would you even 
> print an 'err_t' value anyway)?

It seems that yet again, you need an explanation of fundamental points 
of software development.  Today's lesson is on "abstraction".

It does not matter what type "err_t" is, underneath.  What matters is 
what you can /do/ with it.  It is a type that is returned by this 
function (and many others), and which can be compared to ERR_OK, 
ERR_INPROGRESS, and ERR_ARG.  That's all you need to know to use it here.

Maybe on some targets (of this portable library), err_t is "signed 
char".  Maybe on others it is "int32_t".  Maybe in a newer version of 
the library, it will be an enum.

It is also nice to know that it can be used in a switch, and cast to an 
int for printf.

The documentation for the type can give more or less detail about it. 
But it is /not/ the same as a "signed char".  That is an implementation 
detail which you should not rely on, and it is better - clearer, safer, 
more portable, more maintainable - if you do not know what it is.  (I 
didn't know, until looking it up for these posts.)  You use the correct 
type, as documented.


Or look at the "ip_addr_t" type.  It happens, at the moment, to be a 
struct.  But it might have been a union.  The size and contents of the 
struct depend on details of how the library is built - whether it has 
support for ipv4, ipv6, or both.  Maybe a future version will also 
support ipv8, or ipv5 (I've heard some people are trying to make an IP 
protocol that covers more than IPv4, but without most of the 
complicating additional features of IPv6).  It is an abstract type - you 
use it without knowing the details.


> 
> That 'ip_addr_t' turns out to be a struct. For those I would use 
> typedefs anyway; I rarely use struct tags and you have to invent an 
> identifier in either case.
> 
> Then we come to the function pointer, which is a quite a chunky one, but 
> let's work with it. Here, I would question whether you really need those 
> types in there, and especially those names.
> 
> Presumably you have a regular function of your own with the same 
> signature? You anyway never directly 'call' this parameter with 
> arguments; you just pass it the address of your handler.

Yes, that is how callbacks work.

> 
> Or do you use that typedef as documentation?

You can certainly do that if you want, in a declaration of the function 
- but it would be unusual to do so in the definition.  The typedef is 
used primarily when passing the function pointer around, or storing it 
(in a local variable, in a struct, or whatever).

> 
> Where does the info come from anyway; does the library export a suitable 
> typedef? In that case you might as well use it. But if not, info must 
> come from elsewhere.

Of course it "exports" the typedef - it is in one of the library's headers.

> 
> Anyway with some tweaks in place, using the struct typedef and using an 
> inline function pointer type, it would look like this:
> 
>   signed char
>      dns_gethostbyname(
>        const char *hostname,
>        IP_addr    *addr,
>        void      (*found)(char*, IP_addr*, void *),
>        void       *arg
>     );
> 
> In this form, it is not wildly different from your short version.

Not wildly different, just worse by counter-productively removing the 
abstractions and appropriate type names, and uselessly cluttering the 
declaration with unnecessary detail.

> 
> So I would look at other ways of tidying up before resorting to 
> extraneous typedefs.
> 
> But here, there may well be an extra reason to use a callback typedef; I 
> don't have the full details.
> 
> 

[toc] | [prev] | [next] | [standalone]


Page 18 of 32 — ← Prev page 1 … 16 17 [18] 19 20 … 32  Next page →

Back to top | Article view | comp.lang.c


csiph-web