Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
kaheu
34 / 0 / 0
Регистрация: 19.08.2013
Сообщений: 246
#1

Какие есть компиляторы c++ без изменения синтаксиса - C++

27.07.2014, 12:19. Просмотров 1351. Ответов 37
Метки нет (Все метки)

какие есть компиляторы c++ без изменения синтаксиса?
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.07.2014, 12:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Какие есть компиляторы c++ без изменения синтаксиса (C++):

Какие компиляторы (или среды) поддерживают с++ 11? - C++
У меня wxDev c++ билд 7.4. я понятия не имею какой там с++. компиляторы от default GCC до default VS2010 Пытался прописать команды типо...

Определить, какие из этих имен встречаются во всех классах, какие есть хотя бы в двух классах, и какие - только в одном классе - C++
Для каждого из четырех классов указаны имена девочек, обучающихся в них. Определить, какие из этих имен встречаются во всех классах, какие...

Компиляторы. Какие преимущества между "кнопкой" и консолью? - C++
В наличии два компилятора: от vs и intel с оболочками и консоли. Какие преимущества между "кнопкой" и консолью?

Возможно ли как-то в Visual Studio 2010 проверять есть ли утечки памяти? Может есть какие-то специальные плагины для этого? - C++
Название темы отражает суть вопроса.

Как узнать какие изменения произошли в 2 документах - C++
Добрый день! я не являюсь программистом и навыков у меня как токовых нет( Но очень нужна ваша помощь и надеюсь что нормально отнесетесь...

Какие нужно делать изменения в программах, если изучаешь С++ по старым книгам - C++
Здравствуйте! Периодически сталкиваюсь с примерами, которые не работают из старых но многими рекомендуемых книг, или с разных форумов. ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
0x10
2464 / 1636 / 238
Регистрация: 24.11.2012
Сообщений: 4,031
27.07.2014, 12:20 #2
Цитата Сообщение от kaheu Посмотреть сообщение
без изменения синтаксиса?
В каком смысле?
0
kaheu
34 / 0 / 0
Регистрация: 19.08.2013
Сообщений: 246
27.07.2014, 12:22  [ТС] #3
Цитата Сообщение от 0x10 Посмотреть сообщение
В каком смысле?
не добавляющий новых команд
0
0x10
2464 / 1636 / 238
Регистрация: 24.11.2012
Сообщений: 4,031
27.07.2014, 12:25 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
У компиляторов есть непереносимые на другие компиляторы расширения, это нормально. Просто не пользуйтесь ими.
0
Evg
Эксперт CАвтор FAQ
17826 / 6036 / 388
Регистрация: 30.03.2009
Сообщений: 16,567
Записей в блоге: 26
27.07.2014, 13:37 #5
Цитата Сообщение от kaheu Посмотреть сообщение
не добавляющий новых команд
В этом смысле того, что ты хочешь, в природе скорее всего не существует. Любой промышленный компилятор содержит свои собственные расширения. Присоединяюсь к предыдущему оратору на тему того, что не нужно использовать расширения там, где они не нужны. А для этого нужно хорошо понимать стандарт языка
0
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
27.07.2014, 13:39 #6
У многих компиляторов есть флаги, которые запрещают использовать расширения или, как минимум, оповещают об их присутсвии в коде.
0
Evg
Эксперт CАвтор FAQ
17826 / 6036 / 388
Регистрация: 30.03.2009
Сообщений: 16,567
Записей в блоге: 26
27.07.2014, 13:56 #7
Возможно. У gcc, по крайней мере, нету никакой возможности работать на 100% без расширений
0
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
28.07.2014, 10:10 #8
Разве -pedantic или -pedantic-errors вместе с -ansi что то могут пропустить?
0
Evg
Эксперт CАвтор FAQ
17826 / 6036 / 388
Регистрация: 30.03.2009
Сообщений: 16,567
Записей в блоге: 26
28.07.2014, 11:25 #9
Цитата Сообщение от Toshkarik Посмотреть сообщение
Разве -pedantic или -pedantic-errors вместе с -ansi что то могут пропустить?
C
int x;
__typeof__ (x) y;
Код
$ bgcc t.c -c -pedantic -pedantic-errors -ansi
<ok>
Есть ряд неотключаемых расширений. Сделано это для того, чтобы их можно было использовать в стандартных хидерах (типа stdio.h). Т.е. для эффективной реализации в хидерах в любом случае требуются расширения, но при этом нужно обеспечить, чтобы пользовательское приложение, потребляющее эти хидера, нормально компилировалось в режимах типа -ansi. Поэтому они сделали так, что "typeof" в режиме -ansi не будет работать, а "__typeof__" - будет. Аналогичная фигня для всяких asm, restrict, inline, может ещё что-то - эти ключевые слова с двумя подчерками в начале и в конце жрутся всегда, независимо от опций типа -ansi. Возможно, помимо этой нанотехнологии, существуют и другие.

Поэтому если хочешь на gcc писать 100% переносимый код, то помимо опций придётся задействовать ещё и моск. Хз как у других компиляторов. У Sun'овского компилятора вроде бы тоже в своё время на подобные вещи наступали, но было давно, а потому на 100% не уверен, что проблема именно такая
3
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
28.07.2014, 11:35 #10
Понял, о чем Вы. Я имел ввиду явное расширение языка, а не вспомогательные функции компилятора. В любом случае, спасибо за разъяснения.
0
Evg
Эксперт CАвтор FAQ
17826 / 6036 / 388
Регистрация: 30.03.2009
Сообщений: 16,567
Записей в блоге: 26
28.07.2014, 15:34 #11
typeof - это именно расширение языка, а никакая не функция. Такой же оператор, как и sizeof
0
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
28.07.2014, 18:03 #12
typeof но не __typeof__. И я не имею ввиду, что это функция в смысле языка программирования. Если эти нестандартные операторы ( начинающиеся и заканчивающиеся "__" ) используются при флагах ansi и pedantic, то человек должен понимать, что он делает. Ну, по крайней мере, я на это надеюсь. Вы же сами сказали, что они работают только потому, что используются в системных библиотеках/заголовках и являются частью их реализации.
0
Evg
Эксперт CАвтор FAQ
17826 / 6036 / 388
Регистрация: 30.03.2009
Сообщений: 16,567
Записей в блоге: 26
28.07.2014, 18:39 #13
Цитата Сообщение от Toshkarik Посмотреть сообщение
typeof но не __typeof__
В C89 нету typeof'а. А опция -ansi она эквивалентна -std=c89. Т.е. typeof в данном случае работает как расширение языка (хоть с подчерками, хоть без них)

Цитата Сообщение от Toshkarik Посмотреть сообщение
Вы же сами сказали, что они работают только потому, что используются в системных библиотеках/заголовках и являются частью их реализации
Не "они работают, потому что используются в хидерах", а "их сделали именно такими, чтобы использовать в системных хидерах"

Цитата Сообщение от Toshkarik Посмотреть сообщение
то человек должен понимать, что он делает
Я про то и говорю, что одними опциями не получится контролировать отсутствие расширений, нужно ещё и понимать, что ты делаешь
0
CyberSolver
101 / 74 / 17
Регистрация: 23.07.2014
Сообщений: 686
Записей в блоге: 1
28.07.2014, 19:07 #14
Цитата Сообщение от Toshkarik Посмотреть сообщение
Я имел ввиду явное расширение языка, а не вспомогательные функции компилятора
Конечно, никто не мешает написать C++++. Вот только все нормальные люди такое чудо не будут использовать. Потому что стандарт Си++ (да, наверное, и любой стандарт) явно запрещает расширять язык таким способом. Добавить всякие __FUNCNAME__, __typeof__ - можно. Поменять синтаксис - нет.
0
Evg
Эксперт CАвтор FAQ
17826 / 6036 / 388
Регистрация: 30.03.2009
Сообщений: 16,567
Записей в блоге: 26
28.07.2014, 19:36 #15
Расширение языка - это более сложная вещь, чем дополнительное ключевое слово. Например, в C89 внутри лексического блока должны идти сначала описания переменных, и только потом операторы. А вот в gnu-расширении языка C89 их можно писать вперемешку (как в C++). При этом стандарт языка Си никак не может запретить gnu'шника (да и другим разработчикам) разрабатывать собственный стандарт языка
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.07.2014, 19:36
Привет! Вот еще темы с ответами:

Какие независимые друг от друга изменения позволят коду отработать корректно? - C++
Какие независимые друг от друга изменения позволят коду отработать корректно: class Сountеr { public: // 1 void Count(); // 2 };...

Инкапсулировать без серьезного изменения..возможно ли? - C++
#include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; using namespace std; class list_block { ...

Какие книги есть по Си++? - C++
Чтобы там было как создать класс-динамический массив. И желательно чтобы эти книги были в интернете:)

Какие есть ошибки в коде? - C++
Добрый день. Сейчас было небольшое собеседование и одна из задачек была такая /* What problems do you see in this code */ class A...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
28.07.2014, 19:36
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru