|
c correction (was: cloning/invocation): msg#01348lang.smalltalk.squeak.general
I wrote: > You have to properly initialize the stack frame. How do you do that? > By copying some values from the code or some other area. > > int foo ( char c ) { > int count = 0; max = 99; > > while ( count < max ) { .... } > } > > Some initial code in "foo" must copy 0 and 99 to the right places on > the stack. Most people on this list probably aren't interested in the fine details of C semantics, but after I sent the above it started to look strange to me so I made a quick test and found I was wrong. For dynamic variables, initializer expressions are just a short hand for code to execute the implied assignment and the expression is *not* evaluated at compile time. So int gg = 12; void foo() { int total = gg*2; ...... } main() { foo(); gg = 45; foo(); ... } will use the value of "gg" at the time foo is invoked, unlike what I had stated. What I wrote is correct for static variables, so this is a case of same syntax but two different semantics. I guess this makes sense in practice as we could "#define gg 12" to get the effect of evaluating the expression at compile time. -- Jecel
|
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | Is this right (Process>>interruptName:), Ned Konz |
|---|---|
| Next by Date: | Re: [BUG]Collection>>removeAll:, Tim Rowledge |
| Previous by Thread: | Re: cloning/invocation, Jecel Assumpcao Jr |
| Next by Thread: | Re: cloning/invocation, Marcel Weiher |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |