gcc 6: якобы "переменнные" размеры массивов в структуре
От: Quarter-123 Россия  
Дата: 25.05.17 08:22
Оценка:
есть такой, прекрасно работающий на 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 признать, что константа это константа и создать структуру?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.