Я отлаживал данный код C ++ с помощью клавиши F11 (режим Step Into), чтобы понять точный порядок вызова функций в коде, и я понял, что это будет никогда не входите в некоторые функции, если я не установил точку останова в какой-либо строке внутри определения функции.
Я имею в виду, если я вызываю функцию из основного метода, а функция определяется в другом .cpp Я ожидаю, что режим отладки F11 войдет шаг за шагом внутрь функция для анализа изменений переменных. В большинстве случаев это происходит, но в некоторых случаях он просто выполняет функцию, не заходя в нее, и переходит на следующую строку в основном методе.
Почему это происходит?
Пример:
Это функция, в которую F11 никогда не вступит:
void VirtualCamera::display (void) {
glClearColor(0.0f, 0.0f, 0.0f, 1.0f); // Clear the background of the window
glClear(GL_COLOR_BUFFER_BIT); //Clear the colour buffer (more buffers later on)
glLoadIdentity(); // Load the Identity Matrix to reset our drawing locations
glTranslatef(0.0f, 0.0f, -5.0f);
renderPrimitive(); // Render the primitive
glFlush(); // Flush the OpenGL buffers to the window
}
Это основной метод, в котором F11 идет шаг за шагом:
void VirtualCamera::CameraMain(int argc, char **argv){
glutInit(&argc, argv); // Initialize GLUT
glutInitDisplayMode (GLUT_SINGLE);
glutInitWindowSize (500, 500); // Set the width and height of the window
glutInitWindowPosition (100, 100); // Set the position of the window
glutCreateWindow ("OpenGL Window"); // Set the title for the window
glutDisplayFunc(display); // Tell GLUT to use the method "display" for rendering
glutReshapeFunc(reshape);
glutMainLoop(); // Enter GLUT's main loop
}