Son códigos del estándar POSIX, no es estándar de C.
Eh, no estoy tan seguro que sea parte de POSIX. De todas formas, los códigos de escape en sí, son una especificación para terminales (son un estándar en sí). Así que realmente depende de la terminal que estes usando.
CMD creo que si soporta esos caracteres de escape pero es una configuración que necesita ser habilitada para versiones anteriores a Windows 10 build 1909.
Una prueba (estoy usando bash con WSL pero debe ser lo mismo):
No tengo un compilador a la mano (para win) pero debería ser lo mismo.
Para ciertas versiones anteriores:
Enabling ANSI colors in older versions of Windows
To use ANSI colours in the Windows terminal requires setting VirtualTerminalLevel.
VirtualTerminalLevel = 1 is now set by default for the terminal and in ConPTY.
In Windows versions 1511 through to 1903 this had to be enabled in the registry at:
[HKEY_CURRENT_USER\Console]
"VirtualTerminalLevel"=dword:00000001
Fuente:
https://ss64.com/nt/syntax-ansi.htmlClaro que podrías utilizar otra terminal (que no sea CMD) y que soporte el estandar.
Por si alguien duda con lo de bash investigue un poco más de como hacerlo con echo: