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


> 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