есть такой, прекрасно работающий на clang код:
#include <stdio.h>
static const int SZ = 100;
// #define SZ 100
typedef struct Mdata {
int status;
char buf[SZ];
} Mdata;
int
main(void)
{
Mdata dt = {.status = 1, .buf = "123" };
printf("%d - %s\n", dt.status, dt.buf);
}
однако gcc 6.3.0 отказывается его компилировать с вот такой замечательной ошибочкой:
test_array.c:8:7: error: variably modified 'buf' at file scope
char buf[SZ];
^~~
к сожалению развернуть llvm на этом устройстве (uname -a
Linux nserv 3.10.102 #15101 SMP Mon May 22 10:01:45 CST 2017 armv7l GNU/Linux synology_armada38x_ds116 ) пока невозможно,
соответственно вопрос к специалистам, можно ли как-то заставить gcc признать, что константа это константа и создать структуру?