Первый вариант - недо"решение" неудобства с строками в Павн, нынче тренд среди псевдо-прокодеров этого портала. Позволяет перекидывать свою лень и недостаток знаний элементарной арифметики на компилятор, соответственно несущественно увеличивая время компиляции. Этот вариант позволяет легко определить точную длину форматированной строки компенсируя это утратами глобальной памяти (экономим несколько байтов (если конечно не умеем считать или лень это сделать) в стеке и теряем в несколько раз больше байтов в секции данных = хороший профит :pleasantry:). Многие апологеты этого способа скажут что в отличий от второго варианта, в этом можно очень удобно менять содержимое форматированной строки (то бишь не понадобится заново считать ее максимальную длину) но и этого есть вторая сторона - при появлений нужды изменить/добавить/убрать определенный параметр в этой самой форматированной строки придется опять же в ручную вычитывать длину плейсхолдеров и сложить максимальную длину переменной.
Второй вариант - не увеличивает время компиляции, не использует секцию данных, неудобный (по мнению некоторых), не принуждает к бесполезному идеализму.