Если то, что вы имели в виду это выделить/объявить переменную размера объектов, то да в современных компиляторов, это возможно для локальных динамических переменных. Это связано с тем, что все компиляторы должны делать это, это bump указатель стека, чтобы освободить место для ваших локальных варов, когда он входит в функцию, поэтому к этому времени он знает значение параметра no_of_users
.
Как правило, не переменные, поскольку они не живут в стеке и настроены до вызова функции.
Он также не будет работать для любых переменных, которые компилятор должен выделить, если во время компиляции не известно, сколько их нужно выделить. Например:
static unsigned int no_of_users = 10;
static char var[no_of_users];
int main(void){
return 0;
}
не будет работать, но это будет:
#define no_of_users 10
static char var[no_of_users];
int main(void){
return 0;
}
Я не думаю, что ваш код будет даже скомпилировать – user2408578
@ user2408578: Он компилирует. C 1999 добавлены массивы переменной длины. –
Вы пытались скомпилировать его, возникают ли у вас проблемы? Я предполагаю, что вы сначала попробовали код, прежде чем отправлять вопрос здесь. – Nobilis