Liste des Groupes | Revenir à cl c |
On 20/04/2025 23:36, Keith Thompson wrote:bart <bc@freeuk.com> writes:>>for(p=sqliteHashFirst(&pSchema->trigHash); p; p=sqliteHashNext(p)){
sqlite3DeleteTrigger(db, (Trigger*)sqliteHashData(p));
}I might write it like this:>
for ( p = sqliteHashFirst(&pSchema->trigHash);
p != NULL;
p = sqliteHashNext(p) )
{
sqlite3DeleteTrigger(db, (Trigger*)sqliteHashData(p));
}I have certain preferences (spaces around most operators, explicit>
comparison to NULL, willingness to split long lines) that other C
programmers may or may not share.
I rarely see complex loops split over multiple lines (mainly when they
get so long that they'd overflow the line, but they can still be
complex enough before then).
>
But the thing is, once you split it into multiple lines, then there is
little advantage over using a regular 'while' loop:
>
p = sqliteHashFirst(&pSchema->trigHash);
while (p != NULL)
{
sqlite3DeleteTrigger(db, (Trigger*)sqliteHashData(p));
p = sqliteHashNext(p) )
}
AFAIK it is legal C code, and I invented it because somebody said
things that belong together should be together in one place. However,
I have seen actual examples like that, in for-headers that that use
comma-separated expressions.
I'd rather not write `for (ch in 0..255)` because it's a syntax error.>
It's a syntax error because the form doesn't naturally exist in C;
you'd have to emulate using macros, which is a poor solution.
You have the luxury of using your own language.>
That 'ch in 0..255' form or close equivalent is supported by that long
set of languages I listed earlier. It's not my invention, I just
copied it.
>
It is just something that is desirable. Look again at the C version:
it looks off. (At least, you'd use a shorter loop index!)
>I said I tried one like C's, and it was never used. There is enoughIt was never used by whom?
flexibility in the rest to deal with anything that comes up.
By me. One use-case was porting code from C, but I didn't do much of
that either.
>If you don't like C-style for loop, they absolutely should not>
exist in a language for which you are, if I understand correctly,
the sole implementer and the sole user.
But I hear so much about how wonderful it is, how multi-purpose, how
indispensible, how superior to an ordinary 'for' (admittedly from
people who don't have a choice) that I didn't want to miss out!
Les messages affichés proviennent d'usenet.