174 / 170 / 19
Регистрация: 31.08.2010
Сообщений: 573
|
|
1 | |
какому стандарту С++ соответствует minGW01.09.2010, 20:52. Показов 7097. Ответов 30
Метки нет (Все метки)
Здравствуйте! У меня возникла такая проблема: я сейчас изучаю С++ и компилирую программы с помощью компилятора minGW. В книге дошел до момента создания массивов (статических) и там говорится, что статические массивы можно инициализировать только константным выражением, а переменной нельзя инициализировать массив.
Вот в чем вопрос. компилирую в minGW - он не ругается на использование переменных в качестве инициализации массивов попробовал скомпилировать в Visual C++ 2010 Express Edition, она выдает ошибку: Нельзя массив инициализировать неконстантным выражением Как мне сделать, чтобы minGW более-менее поддерживал стандарт, может какие-нибудь ключи подключить
0
|
01.09.2010, 20:52 | |
Ответы с готовыми решениями:
30
Соответствует ли код стандарту? Соответствует ли это стандарту С? насколько это соответствует стандарту? Какова вероятность того, что устройство соответствует стандарту? |
1080 / 1007 / 106
Регистрация: 28.02.2010
Сообщений: 2,889
|
|
02.09.2010, 18:51 | 22 |
0
|
Модератор
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
|
|
02.09.2010, 20:36 | 23 |
0
|
174 / 170 / 19
Регистрация: 31.08.2010
Сообщений: 573
|
|
03.09.2010, 14:14 [ТС] | 25 |
Спасибо всем за ответы!
использую gcc 4.4.0, кстати качал тоже mingw 5.1.6 подскажите пожалуйста, что это за расширения и где про них можно почитать, я посмотрел в спецификации стандарта http://www.kuzbass.ru:8086/doc... #dcl.array, там написано, что массив необходимо инициализировать константным выражением (constant-expression): D1 [constant-expression] спасибо, niXman, попробовал TDM сборку, с -ansi скомпилировалось, но все равно позволяет создавать массивы с неконстантными значениями еще раз спасибо всем, буду дальше разбираться с c++, mingw, gcc и в дальнейшем с qt
0
|
03.09.2010, 14:23 | 26 |
0
|
174 / 170 / 19
Регистрация: 31.08.2010
Сообщений: 573
|
|
19.04.2011, 18:27 [ТС] | 28 |
Привет всем!
Наконец-то нашел решение проблемы, которую хотел решить. Действительно, как выше говорилось, массивы переменной длины - это расширение GNU языка C. Там есть множество других расширений, но самое главное: чтобы их отключить и тем самым компилировать код, который будет поддерживаться несколькими компиляторами необходимо использовать ключ -pedantic, теперь будет использоваться только ISO C++ и на все расширения GNU C и GNU C++ будут выдаваться ошибки компилировать данную программу теперь можно следующим способом: mingw32-g++ -pedantic main.cpp -o main либо g++ -pedantic main.cpp -o main В результате вылетает следующая ошибка (что и требовалось доказать):
0
|
19.04.2011, 18:36 | 29 | |||||
Все расширения в gcc не отключаются в принципе (видимо, политика у них такая). Например, такой тест:
0
|
174 / 170 / 19
Регистрация: 31.08.2010
Сообщений: 573
|
|
19.04.2011, 18:53 [ТС] | 30 |
Действительно работает.
я так понял __asm__, __volatile__ - альтернативные формы ключевых слов GNU C только не понятно что делает ("" : : : "cc")
0
|
19.04.2011, 19:49 | 31 |
Такие хрени с двумя подчерками понимаются всегда (даже в вариантах с типа якобы отключенными расширениями). Делается это для того, чтобы можно из было помешать в библиотечные инклюды, а приложения компилировать с опциями -ansi, -pedantic. Т.е. твоё приложение как бы без расширений, но те расширения, которые лезут из библиотек, такому режиму не мешают. Если посмотреть в инклюды типа /usr/include/bits/string2.h (напамять пишу, могу и ошибиться), то видно, что для многих стандартных функций сделаны реализации в виде ассемблерных вставок
Пустая ассемблерная вставка
0
|
19.04.2011, 19:49 | |
19.04.2011, 19:49 | |
Помогаю со студенческими работами здесь
31
Какому разрешению соответствует плёночная мыльница? Какому типу переменной соответствует HANDLE? AMD Athlon II X2 240 (2.8 разгон до 3.0) какому из Intel'ов он соответствует Какому логическому элементу соответствует приведённая на рисунке ключевая модель Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |