Ничего разжёванного не вижу... так норм!
static const char str1[100] = "pov the best";
PRINT(str1);
так нет! и это правильно!
static const char str1[100] = "pov %d best";
PRINT(str1);
ибо "warning: more '%' conversions than data arguments"
Так что никакого "если в строке будут всякие" не надо тут, анализатор это всё видит.
Поэтому, если первый вариант норм, то чем отличается от него следующее:
typedef struct
{
char str1[100];
} my_t;
static const my_t x =
{
.str1 = "pov the best"
};
PRINT(x.str1);
"warning: format string is not a string literal (potentially insecure)"