gpt4 book ai didi

C:优化导致SDL_QUIT为真?

转载 作者:行者123 更新时间:2023-11-30 17:32:23 26 4
gpt4 key购买 nike

我有一个奇怪的问题,我自己绝对找不到解决方案。我正在编译一个程序,如下所示:

gcc -O2 -std=c99 -pedantic -W -Wall $(sdl2-config --cflags --libs) -lGL -o 测试 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 语句,程序将无法退出并正常运行。

我必须补充一点,这个循环在一个由 main 调用的函数中运行(显然在文件 src/mainLoop.c 中)。

有什么建议吗?

最佳答案

正如 sth 所说,我忘记正确初始化 exitProgram。我想知道为什么 -pendantic-Wall 没有警告我这一点。

关于C:优化导致SDL_QUIT为真?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24205326/

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