我有一个奇怪的问题,我绝对找不到自己的解决方案。我按如下方式编写程序:
gcc -O2 -std=c99 -pedantic -W -Wall $(sdl2-config --cflags --libs) -lGL -o test main.c src/sdlFunc.c src/mainLoop.c src/openglFunc.c
-pendantic
和-Wall
不会返回任何错误或警告。问题在于我认为这段代码:
while (!exitProgram) {
while (SDL_PollEvent(&event)) {
if (event.type == SDL_QUIT) exitProgram = 1;
if (event.type == SDL_MOUSEBUTTONDOWN) exitProgram = 1;
}
if (kbState[SDL_SCANCODE_W] || kbState[SDL_SCANCODE_UP]) {
rotation_x += 0.5;
}
if (kbState[SDL_SCANCODE_S] || kbState[SDL_SCANCODE_DOWN]) {
rotation_x -= 0.5;
}
if (kbState[SDL_SCANCODE_A] || kbState[SDL_SCANCODE_LEFT]) {
rotation_y += 0.5;
}
if (kbState[SDL_SCANCODE_D] || kbState[SDL_SCANCODE_RIGHT]) {
rotation_y -= 0.5;
}
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glClearColor(rotation_x * 0.1, rotation_y * 0.1, rotation_x * 0.2, rotation_y * 0.2);
createCube(0.5, rotation_x, rotation_y);
SDL_GL_SwapWindow(screen);
}
通常这会循环,直到我按下鼠标按钮。但是,当使用-O2
(或任何-O
编译时)该程序无法运行。 Gdb表示程序正常退出。此外,如果我评论两个if
语句,程序将无法退出并正常运行。
我必须补充说,这个循环在一个函数中运行(显然在文件 src / mainLoop.c 中),由main调用。
有什么建议吗?
答案 0 :(得分:0)
如上所述,我忘了正确初始化exitProgram。我想知道为什么-pendantic
和-Wall
并没有警告我这件事。