Sujet : Re: Block Comments Or Rest-Of-Line Comments?
De : Keith.S.Thompson+u (at) *nospam* gmail.com (Keith Thompson)
Groupes : comp.lang.cDate : 21. Mar 2024, 20:48:53
Autres entêtes
Organisation : None to speak of
Message-ID : <87edc31i3e.fsf@nosuchdomain.example.com>
References : 1 2 3 4 5
User-Agent : Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux)
Richard Harnden <
richard.nospam@gmail.invalid> writes:
On 21/03/2024 19:23, Keith Thompson wrote:
Richard Harnden <richard.nospam@gmail.invalid> writes:
[...]
And sometimes, when it's not a really a comment, but rather a block of
code I don't want right now:
>
#ifdef 0
...
#endif
I think you mean "#if 0".
>
Yes I did :)
>
I use that sometimes, but one disadvantage is that if you're viewing
the
middle of a very large block of code, it can be hard to tell that it's
been "commented" out.
I have a script that applies "#if 0" and "#endif" to a block of code
*and* prepends "* " to each line in the block.
>
That's a good ideo. Can you share it?
Sure. It's a Perl script called "if0". It tries to deal with
variations in line endings (I sometimes work with code with LF and/or
CRLF line endings) and with tabs vs. spaces as indentation.
I don't have a script that undoes what if0 does. I might write one
one of these days, but usually I can just revert the change in source
control or change it back manually.
Complaints about Perl being write-only will be cheerfully ignored.
```
#!/usr/bin/perl
use strict;
use warnings;
my @lines = <>;
my $newline = "\n";
if (defined $lines[0] and $lines[0] =~ /\r$/) {
$newline = "\r\n";
}
print "#if 0$newline";
foreach my $line (@lines) {
if ($line =~ /^ /) {
$line =~ s/ /*/;
}
elsif ($line =~ /^\r?$/) {
$line =~ s/^/*/;
}
else {
$line =~ s/^/* /;
}
print $line;
}
print "#endif /* 0 */$newline";
```
-- Keith Thompson (The_Other_Keith) Keith.S.Thompson+u@gmail.comWorking, but not speaking, for Medtronicvoid Void(void) { Void(); } /* The recursive call of the void */