Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> массивы переменой длины в кач. аргументов функции, неясная ошибка при компиляции (Яз. Си) 
V
    Опции темы
azesmcar
Дата 28.4.2009, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Цитата

Как ни странно, работает, даже если файл дать расширение .cpp (компилятор gcc, естественно) 

Ему наплевать на расширение.
Цитата

компилятор gcc

этого хватит.

а вот на визуал студии - не работает.
1>c:\my projects\dd\dd\main.c(5) : error C2057: expected constant expression
1>c:\my projects\dd\dd\main.c(5) : error C2466: cannot allocate an array of constant size 0
1>c:\my projects\dd\dd\main.c(5) : error C2057: expected constant expression
1>c:\my projects\dd\dd\main.c(5) : error C2466: cannot allocate an array of constant size 0
1>c:\my projects\dd\dd\main.c(5) : error C2087: 'arr' : missing subscript
1>c:\my projects\dd\dd\main.c(5) : error C2133: 'arr' : unknown size

Добавлено через 14 минут и 19 секунд
Поскольку привел издержку из стандарта (привел из неправильного smile) приведу теперь из правильного.

Цитата

C99 adds a new array type called a variable length array type. The inability to declare arrays
whose size is known only at execution time was often cited as a primary deterrent to using C as
20 a numerical computing language. Adoption of some standard notion of execution time arrays
was considered crucial for C’s acceptance in the numerical computing world.
The number of elements specified in the declaration of a variable length array type is a runtime
expression. Before C99, this size expression was required to be an integer constant expression


Но студия все равно не компилирует smile 
PM   Вверх
UnrealMan
Дата 28.4.2009, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 722
Регистрация: 30.3.2006

Репутация: 27
Всего: 32



Цитата(mes @  26.4.2009,  22:29 Найти цитируемый пост)
тут тогда надо уточнить, что подразумевается под преимуществами, если приведенное выше не подпадает в эту категорию. 
и помойму пока не поздно перенести этот этот оффтоп в холивар. 

По этому поводу уже был один эпический holywar: http://forum.vingrad.ru/forum/topic-230321...+/view-all.html

Цитата(Pieris @  27.4.2009,  23:50 Найти цитируемый пост)
Массивы переменной длины применяются ТОЛЬКО в языке Си(без плюсов) и ТОЛЬКО при использовании компилятора, поддерживающего стандарт С99, и совершенно понятно что компиляторы С++ НЕ БУДУТ компилировать такой код ПО ОПРЕДЕЛЕНИЮ.

Наверное, было бы правильнее сказать так: массивы переменной длины входят в текущий стандарт в C, но не входят в текущий стандарт C++. Некоторые гнутые компиляторы C++ поддерживают массивы переменной длины в качестве расширения.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0649 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.