Impresión de cadenas UTF-8 con literales de cadena de printf - wide vs. multibyte

En declaraciones como estas, donde ambas se ingresan en el código fuente con la misma codificación (UTF-8) y la configuración regional está configurada correctamente, ¿hay alguna diferencia práctica entre ellas?

printf("ο Δικαιοπολις εν αγρω εστιν\n");
printf("%ls", L"ο Δικαιοπολις εν αγρω εστιν\n");

Y, en consecuencia, ¿hay alguna razón para preferir una sobre la otra cuando se hace una salida? Me imagino que el segundo se desempeña un poco peor, pero ¿tiene alguna ventaja (o desventaja) sobre un literal multibyte?

EDIT: No hay problemas con la impresión de estas cadenas. Pero no estoy usando las funciones de cadena ancha, porque quiero poder usarprintf etc. también. Entonces, la pregunta es si estas formas de imprimir son diferentes (dada la situación descrita anteriormente), y si es así, ¿la segunda tiene alguna ventaja?

EDIT2: Siguiendo los comentarios a continuación, ahora sé que este programa funciona, lo que pensé que no era posible:

int main()
{
    setlocale(LC_ALL, "");
    wprintf(L"ο Δικαιοπολις εν αγρω εστιν\n");  // wide output
    freopen(NULL, "w", stdout);                 // lets me switch
    printf("ο Δικαιοπολις εν αγρω εστιν\n");    // byte output
}

EDITAR3: He investigado un poco más lo que está sucediendo con los dos tipos. Toma una cadena más simple:

wchar_t *wides = L"£100 π";
char *mbs = "£100 π";

El compilador está generando código diferente. La cadena ancha es:

.string "\243"
.string ""
.string ""
.string "1"
.string ""
.string ""
.string "0"
.string ""
.string ""
.string "0"
.string ""
.string ""
.string " "
.string ""
.string ""
.string "\300\003"
.string ""
.string ""
.string ""
.string ""
.string ""

Mientras que el segundo es:

.string "\302\243100 \317\200"

Y mirando las codificaciones de Unicode, la segunda es UTF-8 simple. La representación de caracteres anchos es UTF-32. Me doy cuenta de que esto dependerá de la implementación.

Entonces, ¿tal vez la representación de caracteres literales es más portátil? Mi sistema no imprimirá las codificaciones UTF-16 / UTF-32 directamente, por lo que se convertirá automáticamente a UTF-8 para la salida.

Respuestas a la pregunta(1)

Su respuesta a la pregunta