Это проблема с плавающей запятой. Попробуйте >
вместо !=
float f = 1.0;
while (f > 0.0) {
f = f - 0.1;
printf("%.1f\n", f);
}
Ctrl-C на консоли генерирует событие SDL_QUIT. Вы можете следить за этим событием, используя SDL_PollEvent или SDL_WaitEvent, и выходить (чисто) при его обнаружении.
Обратите внимание, что другие действия могут генерировать событие SDL_QUIT (например, при попытке закрыть главное окно через диспетчер окон).
Передача SDL_INIT_NOPARACHUTE
флаг инициализации к SDL_Init "Препятствует тому, чтобы SDL ловил фатальные сигналы".
Я нашел ответ:
Флаг SDL_INIT_NOPARACHUTE получит фатальные сигналы так, чтобы SDL мог вымыться после себя. Это работает на вещи как SIGSEGV, но по-видимому SIGINT не является достаточно фатальным.
Мое решение состоит в том, чтобы сбросить обработчик сигналов к SIGINT после того, как SDL был инициализирован:
SDL_Init(SDL_INIT_VIDEO | SDL_INIT_NOPARACHUTE);
signal(SIGINT, SIG_DFL);
Спасибо Кэшируется для Вас, вводит, это поместило меня на правильном пути.
Michael