Is there any way to give a warning when a nested function use its parent function's local variable value.
Mark Farnell
mark.farnell@gmail.com
Sun Nov 23 08:00:00 GMT 2014
I don't think you need a warning in this particular case, perhaps a
better way would be for the compiler to enforce a rule that forbids
access of function pointers of inner functions that referencing local
variables of its parent function.
For example, both:
void *foo(int x)
{
int a;
void foo2(int i)
{
// I want warning for the below code.
if (i == a){}
x += i;
a += i;
}
foo2(a);
return foo2;
}
and:
void *bar;
void foo(int x)
{
int a;
void foo2(int i)
{
// I want warning for the below code.
if (i == a){}
x += i;
a += i;
}
foo2(a);
bar = foo2;
}
should return an error.
On Sun, Nov 23, 2014 at 7:25 PM, xinglp <xinglp@gmail.com> wrote:
> Such as this code
>
> void foo(int x)
> {
> int a;
> void foo2(int i)
> {
> // I want warning for the below code.
> if (i == a){}
> x += i;
> a += i;
> }
> foo2(a);
> }
>
> Because I use nested function for better code orgnization and callback. Thanks.
More information about the Gcc-help
mailing list