Użyłem pod kodem i próbowałem debugować w Visual studio 2008 naciskając F10.Dziwne zachowanie debuggera, gdy używana jest kontrola #line
//test.cpp
#include<iostream>
using namespace std;
int main(void)
{
#line 100 "test.cpp"
cout<<"Inside main()"<<endl;
return 0;
}
Poniżej znajduje się zrzut ekranu debugera.
#line 100 informuje kompilator, aby przejść do wiersza 100, aby uzyskać jego następnego wiersza. Ponieważ 100 linia nie istnieje, wychodzi poza główną funkcję, jak pokazano na zrzucie ekranu. Jeśli spróbuję debugować kod za pomocą F10, sterowanie nigdy nie wróci do głównej funkcji. Wyświetla wskaźnik poza główną funkcją, nawet jeśli wykonuje on funkcję main().
jeśli dam inną nazwę pliku w miejscu test.cpp, wskaźnik idzie do tego pliku, ale nie wróci do test.cpp
jakiś pomysł, dlaczego debugger zachowuje się w ten sposób?
Krótka odpowiedź: nie używaj #line, chyba że naprawdę wiesz, co robisz :-D –