Я знаю, что массивы с длинами, определенных во время выполнения возможны при объявлении массива обычно:Есть ли способ, чтобы составной литерал имел переменную длину в c99?
char buf[len];
и я знаю, что может объявить массив в качестве составного litral и назначить его на указатель на полпути:
char *buf;
....
buf = (char[5]) {0};
Однако объединение двух не работает (запрещено стандартом).
Мой вопрос: есть ли способ добиться эффекта от следующего кода? (примечание len
)
char *buf;
....
buf = (char[len]) {0};
спасибо.
Почему 'memset' не вариант? –
@AlexandreC. Я пытаюсь достичь того, что делает первый сегмент кода (динамически выделять память в стеке), используя составную литерал. – seininn
Если вы не хотите писать действительный переносимый C, 'alloca' может быть использован ... –