gpt4 book ai didi

visual-studio-2012 - Visual Studio 2012 在 Debug模式下超出范围

转载 作者:行者123 更新时间:2023-12-02 02:00:59 25 4
gpt4 key购买 nike

我在 VS 2012 中收到一些错误消息,提示“错误:标识符‘XXXX’超出范围”。

我发现即使是非常简单的类也会发生这种情况,如下所示。

// this is header file
public class IRIS_Database
{
public:
int test1;
IRIS_Database::IRIS_Database(void);
IRIS_Database::~IRIS_Database(void);
};


// this is cpp file
#include "IRIS_Database.h"

/*******************
Constructor
********************/
IRIS_Database::IRIS_Database(void)
{
test1 = 5;
int test2 = 20;

}

/*****************
Destructor
******************/
IRIS_Database::~IRIS_Database(void)
{
}

我在构造函数中放置了断点,并在 watch 上添加了 test1 和 test2。这是屏幕截图。

enter image description here

如您所见,头文件中声明的 test1“超出范围”。在构造函数中声明的局部变量 test2 是可以的。我可以跟踪 test2 但不能跟踪 test1。

这是从主函数启动此类的代码。

/*********************
Main Function
**********************/
int _tmain(int argc, _TCHAR* argv[])
{

// Initialize Database
IRIS_Database* IRDB = new IRIS_Database();
}

我不知道为什么...

优化在项目属性中被禁用,并且正在以 Debug模式运行。我的代码是 C++/CLI 与 Windows 窗体的混合。因此,/clr 选项已启用。平台工具集是 v110,即 VS 2012。这是属性页中的所有选项。如果您想查看特定选项,请告诉我。

/GS/analyze-/W3/Zc:wchar_t/I"../IRDB_Include"/Zi/Od/sdl-/Fd"Debug\vc110.pdb"/fp:precise/D "_CRT_SECURE_NO_WARNINGS"/D "WIN32"/D "_D​​EBUG"/D "_CONSOLE"/D "_UNICODE"/D "UNICODE"/errorReport:prompt/WX-/Zc:forScope/Oy-/clr/FU"C:\Program Files\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0\mscorlib.dll"/FU"C:\Program Files\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0\System.Data.dll"/FU"C:\Program Files\引用程序集\Microsoft\Framework.NETFramework\v4.0\System.dll"/FU"C:\Program Files\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0\System.Drawing.dll"/FU"C :\Program Files\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0\System.Windows.Forms.dll"/FU"C:\Program Files\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0\System. Xml.dll"/MDd/Fa"Debug\"/EHa/nologo/Fo"Debug\"/Fp"Debug\NearIR.pch"

提前致谢!

最佳答案

在这种特殊情况下,实例变量 test1 尚未创建。要执行的下一行(标有黄色箭头)是函数中的第一行。它尚未实际执行,因此执行路径尚未完全设置实例,因此 test1 尚不可用。 (首先设置 test2 会有所不同吗?)

另一方面,test2 是构造函数的局部变量,存储在函数的本地。因此,它始终可以在该函数的任何位置访问。

这只是 Watch 工具的问题。这需要一些额外的工作,但一个好的调试器应该能够显示类的成员变量存在于构造函数中。 MS 表示他们正在处理这个问题。

关于visual-studio-2012 - Visual Studio 2012 在 Debug模式下超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17221431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com