Other way around actually now that I looked it up, C++ is not the default mode but can be specified when desired. Obviously their expression evaluator is much more limited for other reasons such as not having a full blown compiler backing it up, but still, something like this is a 3rd option (choosing a reasonable default and allowing escaping to force evaluation of certain pieces in another mode)
On Wed Jan 07 2015 at 10:57:30 AM Zachary Turner <ztur...@google.com> wrote: > The canonical Windows command line debugger solves this by having two > different evaluation modes. One for C and one for C++. I believe C++ is > always the default, but C evaluation mode can be forced by enclosing an > expression in special delimiters. You can toggle the evaluation mode > multiple times inside the same expression as well. So you can have a > single expression where different pieces of it are evaluated differently. > > Not a language lawyer, but it seems like other stuff would be broken > besides just variables named 'this'. Are there any other known causes of > incorrect evaluation in C frames due to using a C++ evaluation mode? > > On Wed Jan 07 2015 at 10:51:43 AM Greg Clayton <gclay...@apple.com> wrote: > >> 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 <m...@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@cs.uiuc.edu >> > http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev >> >> >> _______________________________________________ >> lldb-dev mailing list >> lldb-dev@cs.uiuc.edu >> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev >> >
_______________________________________________ lldb-dev mailing list lldb-dev@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev