On Sat, 03 Apr 2010, Randy Kobes wrote:
> On 2010-04-03, at 8:39 PM, Philip M. Gollucci wrote:
> 
> > What ANSI C std is that?
> >
> > perl core code and fbsd code do this all over the place.  They are
> > supposedly C-99.
> 
> > On 4/2/2010 4:40 PM, Philippe M. Chiasson wrote:
> >>
> >> In ANSI C you can't define variables in blocks, like
> >>
> >> int foo(void) {
> >>  int a = 2;
> >>  some code
> >>  {
> >>    int b = 3;
> >>    more code
> >>  }
> >>
> >> So the below patch fixes that by making the rc status variable global
> >> to the function. I compile with -Wall -Werror and it tends to pick these
> >> up.
> 
> I'm not sure about the standards, but VC++ on Windows definitely
> doesn't like code coming before declarations in a function like in
> the above.

I think you are confused here.  The code above will definitely work
fine with VC.  What *doesn't* work is mixing declarations and
executable code inside the *same* scope.  Declarations always have
to come at the top of the new scope before any executable code.
Whenever you introduce a new nested scope you can declare additional
variables.

C99 removes this restriction (and C++ never had it), but the Perl core
code definitely doesn't require C99; it compiles with VC just fine.

Cheers,
-Jan



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@perl.apache.org
For additional commands, e-mail: dev-h...@perl.apache.org

Reply via email to