[lldb-dev] invalid use of 'this' outside of a non-static member function

Greg Clayton gclayton at apple.com
Wed Jan 7 10:49:44 PST 2015


All expressions are compiled in C++ mode and thus the restriction. 

There are a few solutions:
1 - make expressions match the current language of the current frame. So if your function was a C function, you will be restricted from using C++ in your expression
2 - rename your "this" and benefit from the C++ abilities of the expression parser 

I personally really like the ability to use "auto" and all of the C++11 constructs in any expression:

(lldb) expr for (auto x = 0; x < my_renamed_this; ++x) { ... }

So I see the problem with C expressions, but I would rather not limit you from being able to access your C++ code from a C function by limiting the language based on where you are stopped.

Greg

> On Jan 7, 2015, at 7:16 AM, mobi phil <mobi at mobiphil.com> wrote:
> 
> Hi,
> 
> The compiler accepted it, so IMHO LLDB should not complain about it.
> 
> I can rename this "this" inside a C function, but it is very likely that other people would name a variable "this" inside C code.
> 
> 
> rgrds,
> mobi phil
> 
> 
> _______________________________________________
> lldb-dev mailing list
> lldb-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev





More information about the lldb-dev mailing list