【发布时间】:2018-02-16 06:51:16
【问题描述】:
我正在开发一个 C++ 程序,在调试时我在以下函数中:
int CClass::do_something()
{
... // I've put a breakpoint here
}
我的CClass有一个属性,我们就叫它att吧。
当我的程序在断点处停止时,我在 Watch 窗口中放置了三件事:
att
this->att
this.att
前两个att 和this->att 包含正确的值,但this.att 包含错误的值(至少看起来是错误的)。
它显示价值的事实意味着this.att具有某种意义。
那是什么意思? this.att与this->att相比是什么意思?
供您参考,我使用 Visual Studio 作为开发环境。
【问题讨论】:
-
您使用的是什么编译器和调试器? Xcode 使用 clang lldb 它实际上为你“修复”了它.. IE: i.imgur.com/fXBfOSE.png 它知道你搞砸了。
-
this是一个指针,所以你应该使用this->att。.是调用一个方法,指针没有,因为它们是原语,因此该语法是非法的 -
是的,因此,代码甚至不应该编译,因此您能够调试它很有趣。那么,表达式
this.att是否出现在您的程序中?也许,它只是一个调试器错误(甚至是调试器特定的功能?) -
@nh_ - 此非法行不在源中。它位于调试器监视窗口中。
-
我添加了我正在使用 Visual Studio 的信息。在我写这个问题时,我不知道这是相关的。
标签: c++ visual-studio debugging watch