This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Is there any way to give a warning when a nested function use its parent function's local variable value.


> 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.
Yes, this is better. For now, when this happend, there's only a
segfault and it's diffcult to dig out.
>
> 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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]