Форум программистов, компьютерный форум, киберфорум
Кроссплатфор­менная разработка
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
218 / 20 / 5
Регистрация: 05.08.2010
Сообщений: 229
1

GCC, статичиские масивы, С++

19.08.2011, 12:49. Показов 2895. Ответов 27
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет.
Такой вопрос: как сделать, что бы gcc не компилил такой код:
C++
1
2
3
int n;
std::cin >> n;
int a[n];
?
8.3.4 Arrays
In a declaration T D where D has the form
D1 [constant-expression]
Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.08.2011, 12:49
Ответы с готовыми решениями:

GCC Сборка 32 разрядной версии GCC 64 разрядным GCC
Доброго времени суток. Возникла необходимость под 32х разрядный Linux, собрать 32 разрядный GCC. Но...

Масивы
Задано масив. Написать: а) все отрицательные элементы; б) все элементы, что не превышают числа...

масивы
переписатьт отрицательные элементы масивы а(n) в В(к) и определить его размер.результат распечатать...

масивы
дана прямоугольная матрица F подсчитать средние арифметическое отрицательных элементов в матрице....

27
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
19.08.2011, 13:22 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от bambino Посмотреть сообщение
Пункт в драфте, где такое сказано ?
Я просто еще не знаю, но предположил, что МОЖЕТ соответствовать.
0
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
19.08.2011, 13:24 22
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Я просто еще не знаю, но предположил, что МОЖЕТ соответствовать.
gcc с -pedantic выдает
warning: ISO C++ forbids variable length array
0
218 / 20 / 5
Регистрация: 05.08.2010
Сообщений: 229
19.08.2011, 13:33  [ТС] 23
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Я просто еще не знаю, но предположил, что МОЖЕТ соответствовать.
Может, но только в таком случае:
C++
1
2
3
constexpr int n() {return 5;}
//main
int a[n()];
Добавлено через 8 минут
ValeryLaptev, Почитал драфт, даже так можно подмутить:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
struct Length
{
    explicit constexpr Length(int i = 0) : val(i) {}
    constexpr int get_l() const {return val;}
private:
    int val;
};
 
int main()
{
    int a[Length(5).get_l()];
    return 0;
}
Чтобы задавать размер, не пхая руки в интерфейс класса.
3
1080 / 1007 / 106
Регистрация: 28.02.2010
Сообщений: 2,889
19.08.2011, 14:01 24
Стало сильно интересно. Решил маны почитать.
Вот что говориться здесь:
Variable-length automatic arrays are allowed in ISO C99, and as an extension GCC accepts them in C90 mode and in C++
Т.е. с расширением от GNU g++ будет компилировать без проблем. Без него (-pedantic-errors) - не получится.
Также стандарт C99 (это к языку си) говорит, что VLA - это нормально. C90 без расширений не допускает VLA.
2
218 / 20 / 5
Регистрация: 05.08.2010
Сообщений: 229
19.08.2011, 14:10  [ТС] 25
Евгений М., Да, спасибо, уже понятно, постами выше обяснили.
0
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
19.08.2011, 18:44 26
Я уже как-то раз поднимал подобную тему. В ней порешили, что программа бабахает массив на максимально возможное кол-во элементов.
Но самое интересное было не это. Если вводить числа от 0 до -7 (по крайней мере на моей сборке компьютера) то код выполнялся без проблем, массив как бы "существовал". Но стоило ввести -8 или меньше - вылетал. Почему - я так и не понял.
0
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
19.08.2011, 18:53 27
Еще будет зависеть от того, как создан массив: глобально или локально. Если локально, то это automatic storage и обычно размещается в стеке. А размер стека ограничен.
А глобальный или динамический массив обычно ограничиваются только размером виртуальной памяти.
0
174 / 170 / 19
Регистрация: 31.08.2010
Сообщений: 573
21.08.2011, 09:53 28
Привет! Посмотри сюда какому стандарту С++ соответствует minGW

Я тоже такую-же тему поднимал

Добавлено через 1 минуту
А если хочется подробностей по этой теме, то советую книгу почитать "Гриффитс Артур. GCC. Настольная книга пользователей, программистов и системных администраторов".

Там все написано и про расширения в том числе
1
21.08.2011, 09:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.08.2011, 09:53
Помогаю со студенческими работами здесь

С++ Масивы
Помогите написать 3 программы по этим заданиям в С++! В одномерном массиве, который состоит из n...

Масивы
Помогите пожалуйста...Голову уже как часа 2 ломаю((( Программа должна осуществлять: 1)Ввод с...

С++ Масивы
Задание такое: В одномерном массиве, который состоит из n действительных элементов, вычислить:...

Масивы
Нужны любые ссылки или учебники по работе с массивами.Хто знает дайте пожалуйста)))


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru