There were problems when designing an application related to logging and error handling. Suppose there is such a code:
void set_opengl_attr(const bool _set_double_buff, const int _msaa_level) { // Проверить значение _msaa_level, которое должно быть равно 0, 2, 4, 8 или 16. // Если значение другое, обработать ошибку и записать в лог. // Проверить вернула ли функция значение 0 (успешно), если нет - записать ошибку в лог. SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 1); // Проверить вернула ли функция значение 0 (успешно), если нет - записать ошибку в лог. SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, _msaa_level); if (_set_double_buff == true) { // Проверить вернула ли функция значение 0 (успешно), если нет - записать ошибку в лог. SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); } // Проверить вернула ли функция значение 0 (успешно), если нет - записать ошибку в лог. SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8); // Проверить вернула ли функция значение 0 (успешно), если нет - записать ошибку в лог. SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8); // Проверить вернула ли функция значение 0 (успешно), если нет - записать ошибку в лог. SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8); // Проверить вернула ли функция значение 0 (успешно), если нет - записать ошибку в лог. SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 8); }
If you implement all the checks, then this will be released:
void set_opengl_attr(const bool _set_double_buff, const int _msaa_level) { if (_msaa_level != 0) { if (_msaa_level != 2 && _msaa_level != 4 && _msaa_level != 8 && _msaa_level != 16) { print_to_log("Error: Uncorrect _msaa_level. Set _msaa_level as 0"); } else { SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 1); SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, _msaa_level); } } if (_set_double_buff == true) { if (SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1) != 0) { print_to_log("Error: SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1) failed."); } } if (SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8) != 0) { print_to_log("Error: SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1) failed."); } if (SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8) != 0) { print_to_log("Error: SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8) failed."); } if (SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8) != 0) { print_to_log("Error: SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8) failed."); } if (SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 8) != 0) { print_to_log("Error: SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 8) failed."); } }
Three times the code! Of course, I went too far with all the checks, but this is just an example for you to understand what I mean. Maybe someone had the same problem? Tell us how you solved it. Only C language features are interested. Thank you in advance!
@
otherwise the user simply will not see what they have answered - Grundy