Mail Archives: djgpp/2002/07/19/09:02:22
In article <ah8qp0$sdn$1 AT nets3 DOT rz DOT rwth-aachen DOT de>,
Hans-Bernhard Broeker <broeker AT physik DOT rwth-aachen DOT de> writes:
> In comp.os.msdos.djgpp kers AT hplb DOT hpl DOT hp DOT com wrote:
>> In article <ah8k0q$lqv$1 AT nets3 DOT rz DOT rwth-aachen DOT de>,
>> Hans-Bernhard Broeker <broeker AT physik DOT rwth-aachen DOT de> writes:
>>>
>>> No, you can't. At least not sensibly, in the way you did it. You
>>> shouldn't be recursing for this, in the first place, nor should you
>>> ever use static variables to keep state across a recursion call.
>
>> Not even for such things as recording recursion depth for prettyprinting?
>
> Not in a useful way, if the static is local to the recursive function.
void printIndented( FILE *sink, Tree t )
{
static int depth = -1;
int i;
depth += 1;
for (int i = 0; i < depth; i += 1) fputc( ' ', sink );
if (isLeaf( t ))
fprintf( sink, "=%s\n", leafString( t ) );
else
{
fprintf( sink, "*%s\n", nodeString( t ) );
for (int i = 0; i < treeKidCount( t ); i += 1)
printIndented( sink, treeKid( t, i ) );
}
depth -= 1;
}
perhaps the example is too simple to raise the point you're addressing?
[It usually turns out in the end, in C anyway, to be easier to pass
the depth in as a parameter. This can make it harder to share interfaces,
which is annoying.]
--
Chris "electric hedgehog" Dollin
C FAQs at: http://www.faqs.org/faqs/by-newsgroup/comp/comp.lang.c.html
C welcome: http://www.angelfire.com/ms3/bchambless0/welcome_to_clc.html
- Raw text -