int* pointerx[x][x];
не является законным в C++ 14. Он был добавлен к ранним сквознякам, но затем удален до окончательной спецификации.
Основные ловушки с помощью расширения компилятора являются:
- Ваш код может не работать (или работать по-другому) на других компиляторов, или на других версиях одного и того же компилятора.
- Как правило, нет четкой документации о том, что делает код, поэтому трудно получить поддержку, если ваш код не работает.
Если вы смотрите через стандарт C для текста переменно модифицированного типа вы увидите, что это происходит во многих местах; эффект, позволяющий массиву переменной длины иметь «эффект бабочки», и он в конечном итоге влияет на многие другие вещи на этом языке.
Например, если int* pointerx[x][x];
разрешен, ваш компилятор также поддерживает int* (*y)[x] == pointerx;
и правильно ли он обрабатывает sizeof *y
? Может быть, так оно и есть; ваша документация компилятора также описывает это?
Использовать 'vector>' –
Что делать, если ваш работодатель просит вас написать контейнер без использования STL? – voltaa7
первый и второй не то же самое. Посмотрите внимательно. – Arne