What are flags in SDL2?

i am trying to reach SDL from common lisp in order to do that i need to understand what are flags of SDL2. Officially flags are Uint32 (“int SDL_Init(Uint32 flags)”) .It means they are numbers?,or it means that mean they are global variables are assigned to uint or something else like enum or something else?
in the sorce code i can not find them, can i find them in source code?

The argument flags is just an argument name. The developer(s) of SDL could have just named the argument whatever he/she/they want(s) but for the sake of understanding what the function expects, the name flags is used.

What the function SDL_Init() expects is an unsigned int (type-defined as Uint32), where each bit decides which functionality that should be initialized/started during SDL initialization. The user/programmer has do decide what sub system(s) to initialize/start by using one- or more initialization flags, OR’d together.

Example code:

SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER);

See this site for more information: https://wiki.libsdl.org/SDL_Init

For more information regarding bitwise operations: https://www.cprogramming.com/tutorial/bitwise_operators.html

as i understand that means for example:00100000 means SDL_INIT_TIMER off, SDL_INIT_AUDIO off, SDL_INIT_VIDEO on ,…

Is that true?

or is it SDL_INIT_TIMER = 10000000, SDL_INIT_AUDIO = 01000000, SDL_INIT_VIDEO = 00100000,…?

To your first post: an unsigned int with the bits set to 00100000 means that SDL will be initialized/started with the SDL_INIT_NOPARACHUTE flag only, which, as I understand it, isn’t used anymore. So by using only that flag, none of the subsystems are initialized/started.

As for your second post:
The bit for enabling SDL_INIT_TIMER is 0x00000001
The bit for enabling SDL_INIT_AUDIO is 0x00000010 etc.

You can check what bit corresponds to which subsystem by checking in the SDL.h header.