使用#line控件时调试器的奇怪行为

bjs*_*123 5 c++ visual-studio-2008

我使用下面的代码并尝试通过按F10在Visual Studio 2008中进行调试.

//test.cpp
#include<iostream>
using namespace std;

int main(void)
{
#line 100 "test.cpp"
   cout<<"Inside main()"<<endl;
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

下面是调试器屏幕截图.

替代文字

#line 100告诉编译器转到第100行以获取其下一行.由于第100行不存在,它将超出主要功能,如屏幕截图所示.如果我尝试用F10调试代码,控制永远不会回到主函数.它继续显示主函数外的指针,即使它正在执行main().

如果我给其他文件名代替test.cpp,指针将转到该文件,但它不会返回test.cpp

知道为什么调试器的行为是这样的吗?

Han*_*ant 8

代码生成器应该使用该指令.从一种语言翻译成另一种语言的工具.因此,当您调试该代码时,调试器将显示原始语言的源文件,逐步执行该语言的语句.而不是翻译代码中的(通常是神秘的)语句.

这不是你在这里做的,你在指令中给出了无意义的信息.当你调试时,显然得到了无意义的结果.Gigo,垃圾进,垃圾出来.删除指令.