Форум программистов, компьютерный форум, киберфорум
Кроссплатфор­менная разработка
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.68/41: Рейтинг темы: голосов - 41, средняя оценка - 4.68
 Аватар для TheAthlete
174 / 170 / 19
Регистрация: 31.08.2010
Сообщений: 575

Какому стандарту С++ соответствует minGW?

01.09.2010, 20:52. Показов 8065. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! У меня возникла такая проблема: я сейчас изучаю С++ и компилирую программы с помощью компилятора minGW. В книге дошел до момента создания массивов (статических) и там говорится, что статические массивы можно инициализировать только константным выражением, а переменной нельзя инициализировать массив.

Вот в чем вопрос.
компилирую в minGW - он не ругается на использование переменных в качестве инициализации массивов

попробовал скомпилировать в Visual C++ 2010 Express Edition, она выдает ошибку: Нельзя массив инициализировать неконстантным выражением

Как мне сделать, чтобы minGW более-менее поддерживал стандарт, может какие-нибудь ключи подключить
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.09.2010, 20:52
Ответы с готовыми решениями:

насколько это соответствует стандарту?
#include <iostream> class shit { private: int x; public: shit(){} shit(int p)...

Соответствует ли код стандарту?
Привет! Имеется следующий код (в очень урощенном виде) struct foo {}; int main() { struct...

Mingw-w64 MinGW TDM-GCC
Всем привет. Хочу понять, существует ли принципиальная разница между Mingw-w64, MinGW и...

30
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
02.09.2010, 18:43
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Евгений М. Посмотреть сообщение
http://www.mingw.org/wiki/Inst... TOforMinGW
Советую прочитать первый абзац пунтка Automated Installer. mingw-get и GUI инсталлятор лучше считать за одно.
скажите, а вы сами то чем пользуетесь?
0
1080 / 1007 / 107
Регистрация: 28.02.2010
Сообщений: 2,889
02.09.2010, 18:51
Цитата Сообщение от niXman Посмотреть сообщение
скажите, а вы сами то чем пользуетесь?
gcc 4.5.0 (MinGW)
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,980
02.09.2010, 20:36
Цитата Сообщение от niXman Посмотреть сообщение
почему все качают этот инсталятор?! эта ветка давно заброшена.
а он по ссылке первый в списке и закачек его больше, чем остальных
0
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
02.09.2010, 20:39
была однажды ситуация.. уже и не вспомню.. но поклялся тогда не юзать офф сборки. с тех пор только TDM`овские или свои.
0
 Аватар для TheAthlete
174 / 170 / 19
Регистрация: 31.08.2010
Сообщений: 575
03.09.2010, 14:14  [ТС]
Спасибо всем за ответы!

использую gcc 4.4.0, кстати качал тоже mingw 5.1.6

Цитата Сообщение от niXman Посмотреть сообщение
minGW поддерживает стандарт лучше чем микрософтстудия. то, о чем вы говорите - расширения конторы gnu. они не являются нарушением стандарта. но добавляют некоторое удобство.
подскажите пожалуйста, что это за расширения и где про них можно почитать, я посмотрел в спецификации стандарта http://www.kuzbass.ru:8086/doc... #dcl.array, там написано, что массив необходимо инициализировать константным выражением (constant-expression):

D1 [constant-expression]

спасибо, niXman, попробовал TDM сборку, с -ansi скомпилировалось,
но все равно позволяет создавать массивы с неконстантными значениями

еще раз спасибо всем, буду дальше разбираться с c++, mingw, gcc и в дальнейшем с qt
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
03.09.2010, 14:23
Цитата Сообщение от TheAthlete Посмотреть сообщение
подскажите пожалуйста, что это за расширения и где про них можно почитать
http://gcc.gnu.org/onlinedocs/gcc-4.4.4/gcc/
Разделы 5 и 6
Конкретно твой случай - глава 5.16
0
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
03.09.2010, 16:10
Цитата Сообщение от niXman Посмотреть сообщение
с тех пор только TDM`овские
Поддерживаю, TDM замечательнейшая вещь.
0
 Аватар для TheAthlete
174 / 170 / 19
Регистрация: 31.08.2010
Сообщений: 575
19.04.2011, 18:27  [ТС]
Привет всем!

Наконец-то нашел решение проблемы, которую хотел решить. Действительно, как выше говорилось, массивы переменной длины - это расширение GNU языка C. Там есть множество других расширений, но самое главное:

чтобы их отключить и тем самым компилировать код, который будет поддерживаться несколькими компиляторами необходимо использовать ключ -pedantic, теперь будет использоваться только ISO C++ и на все расширения GNU C и GNU C++ будут выдаваться ошибки

компилировать данную программу теперь можно следующим способом:
mingw32-g++ -pedantic main.cpp -o main

либо

g++ -pedantic main.cpp -o main

В результате вылетает следующая ошибка (что и требовалось доказать):
Миниатюры
Какому стандарту С++ соответствует minGW?  
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
19.04.2011, 18:36
Цитата Сообщение от TheAthlete Посмотреть сообщение
теперь будет использоваться только ISO C++ и на все расширения GNU C и GNU C++ будут выдаваться ошибки
Все расширения в gcc не отключаются в принципе (видимо, политика у них такая). Например, такой тест:

C
1
2
3
4
void func (void)
{
  __asm__ __volatile__ ("" : : : "cc");
}
У тебя будет компилироваться хоть с -ansi, хоть с -pedantic, хоть с -std=c89
0
 Аватар для TheAthlete
174 / 170 / 19
Регистрация: 31.08.2010
Сообщений: 575
19.04.2011, 18:53  [ТС]
Действительно работает.

я так понял __asm__, __volatile__ - альтернативные формы ключевых слов GNU C
только не понятно что делает ("" : : : "cc")
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
19.04.2011, 19:49
Цитата Сообщение от TheAthlete Посмотреть сообщение
я так понял __asm__, __volatile__ - альтернативные формы ключевых слов GNU C
Такие хрени с двумя подчерками понимаются всегда (даже в вариантах с типа якобы отключенными расширениями). Делается это для того, чтобы можно из было помешать в библиотечные инклюды, а приложения компилировать с опциями -ansi, -pedantic. Т.е. твоё приложение как бы без расширений, но те расширения, которые лезут из библиотек, такому режиму не мешают. Если посмотреть в инклюды типа /usr/include/bits/string2.h (напамять пишу, могу и ошибиться), то видно, что для многих стандартных функций сделаны реализации в виде ассемблерных вставок

Цитата Сообщение от TheAthlete Посмотреть сообщение
только не понятно что делает ("" : : : "cc")
Пустая ассемблерная вставка
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.04.2011, 19:49

Может ли MinGW x64 компилить приложения x32? Или нужно для этого отдельно ещё MinGW х32 качать?
Просто решил поиграться с CodeLite.

Как заставить QTCreator при компиляции MinGW применять DLL от MinGW?
Как заставить QTCreator при компиляции MinGW применять DLL от MinGW? компилирую,с смотрю...

Какому типу переменной соответствует HANDLE?
Доброго времени суток! Разбирал чужой код и возник вопрос. В коде как я понял использовалось WIN...

Вывести по введенному году, какому животному восточного календаря соответствует этот год
Вывести по введенному году, какому животному восточного календаря соответствует этот год. Годы...

С клавиатуры ввести число k (1.30). Определить, какому дню недели оно соответствует, если первое число – понедельник
С клавиатуры ввести число k (1.30). Определить, какому дню недели оно соответствует, если первое...


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

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
сукцессия 30. Фосфорный и азотный замки по "честному" закону лимитирования Либиха
anaschu 16.07.2026
Основные достижения за последние дни 1. Механизм отложенного высвобождения фосфора Добавлен специальный пул для медленного разложения меланизированных гиф ЕСМ Реализована разная скорость. . .
Запрет пометки на удаление и отмены проведения
Maks 16.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "ПутевойЛист" разработанного в КА2. Задача: запретить помечать на удаление и отменять проведения путевого листа при условии, если он сдан. . .
Как надо было делать правильно - вообще не слушать ИИ, его дело - текст.
Hrethgir 15.07.2026
А вообще надо было делать не так, чтобы не исправлять ошибку https:/ / www. cyberforum. ru/ blogs/ 223907/ 10996. html , правильно было : удалил кнопку, а потом добавил её. Всё это стресс конечно. Почему?. . .
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот. Ларри Уингет
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru