Я пытаюсь создать простую функцию расширения массива, которая создает новый массив с теми же значениями, что и предыдущий массив, расширенный на значение:
char* test(char array[], int expandBy) {
char newArray[sizeof(array) + expandBy];
strncpy(newArray, array, sizeof(array));
return newArray;
}
Однако я получаю ошибку времени компиляции expression must have a constant value
. Все ответы, которые я видел на подобные вопросы, предполагают использование макроса, но я не могу использовать макрос, если заранее не знаю значение.
Кто-нибудь знает, как я могу это исправить, или есть ли альтернатива этому?
strncpy
будет не добавлять терминатор. Обратите внимание на это. - person Some programmer dude   schedule 11.11.2017newArray
, а не область его имени. Область видимости – это где отображается имя. Время жизни — это когда существует объект. - person Eric Postpischil   schedule 11.11.2017newArray
, потому что оно использует значение времени выполнения для измерения. Таким образом, причина, по которой OP получила ошибку, на самом деле не связана с тем фактом, чтоsizeof(array)
не дает размер «массива». - person Eric Postpischil   schedule 11.11.2017