On 2010-04-03, at 11:32 PM, Jan Dubois wrote:

> 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.

Thanks for clearing that up - I was forgetting about the admissibility of 
declarations within a scope.

-- 
best regards,
Randy


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

Reply via email to