| Deutsch English Français Italiano |
|
<m2fh54F3tr0U1@mid.individual.net> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail
From: rbowman <bowman@montana.com>
Newsgroups: alt.folklore.computers,comp.os.linux.misc
Subject: Re: The joy of FORTRAN
Date: 1 Mar 2025 04:35:48 GMT
Lines: 45
Message-ID: <m2fh54F3tr0U1@mid.individual.net>
References: <vd5195$edas$1@dont-email.me> <59CJO.19674$MoU3.15170@fx36.iad>
<vd6vto$r0so$1@dont-email.me> <iJEJO.198176$kxD8.81657@fx11.iad>
<3hOdnWpQ649QMGr7nZ2dnZfqnPidnZ2d@earthlink.com>
<vd8doi$15q07$1@dont-email.me> <vd8eg7$15v1j$2@dont-email.me>
<cxicnVzg_cn_eGX7nZ2dnZfqnPadnZ2d@earthlink.com>
<vdapbn$1kp35$5@dont-email.me> <lltpunF4fseU2@mid.individual.net>
<1smdnSjX3YoxgWf7nZ2dnZfqn_idnZ2d@earthlink.com>
<llv30aFa6uvU3@mid.individual.net> <vde4b8$268qv$22@dont-email.me>
<1396870532.749421730.052473.peter_flass-yahoo.com@news.eternal-september.org>
<wrapper-20241001111737@ram.dialup.fu-berlin.de>
<vpl5uk$hhk$3@reader1.panix.com>
<c4acndn4jJXKwCP6nZ2dnZfqnPSdnZ2d@giganews.com>
<1214951717.762291306.657281.peter_flass-yahoo.com@news.eternal-september.org>
<m2a04pF90mqU2@mid.individual.net> <vppj5n$33b82$4@dont-email.me>
<m2clmbFl430U10@mid.individual.net>
<1698682867.762482332.128555.peter_flass-yahoo.com@news.eternal-september.org>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Trace: individual.net bSHE6XvHa1V8Y5ajBCtHlwYLg265piSNdEpeE9obL5/5O1ACf/
Cancel-Lock: sha1:DquO20xCSfpjn2V9rrwjG8F0+P4= sha256:Sw8CkH9+SFZURQItTOl8k7EfIwxng+Hy7mgglU2Q/1c=
User-Agent: Pan/0.160 (Toresk; )
Bytes: 2951
On Fri, 28 Feb 2025 17:47:19 -0700, Peter Flass wrote:
> Imported one C program that was all macros. In hindsight it would have
> been better just to rewrite it.
The one I'm thinking of had gems like
#define STRF_FN_DECL(obj) \
size_t strf_##obj (char *obuf, size_t olen, const char *fmt, \
void *data, list_t *list)
#define STRF_FN(obj) \
STRF_FN_DECL(obj) \
{ \
static list_t llist; \
static struct obj##_struct o; \
\
if (list == NULL || list->data == NULL) { \
if ( data) { \
memcpy(&o, data, sizeof(o)); \
} else { \
memset(&o, 0, sizeof(o)); \
} \
if ( list ) { \
llist = *list; \
} \
llist.data = (void*)&o; \
list = &llist; \
} \
return (strfobj (list->data, list, obj##_map, obuf, olen, fmt)); \
}
#define MAP(nm,s,fmt,fn,sm, sfn) { #s, sizeof (#s)-1, \
offsetof (struct nm##_struct, s), fmt, fn, sm,
sfn }
Between the stringizing and concatenation operators good luck finding a
function that did stuff with foo. Using 4 characters was an extravagance;
most of his code didn't exceed 3 characters for variable names.
Now the irony: he had been a TA at UM and students who had him said he was
a stickler for well commented code. He personally never commented a line
of code as far as I could tell.