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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
kaheu
 Аватар для kaheu
34 / 0 / 0
Регистрация: 19.08.2013
Сообщений: 246
27.07.2014, 12:19     Какие есть компиляторы c++ без изменения синтаксиса #1
какие есть компиляторы c++ без изменения синтаксиса?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.07.2014, 12:19     Какие есть компиляторы c++ без изменения синтаксиса
Посмотрите здесь:

Инкапсулировать без серьезного изменения..возможно ли? C++
Определить, какие из этих имен встречаются во всех классах, какие есть хотя бы в двух классах, и какие - только в одном классе C++
Возможно ли как-то в Visual Studio 2010 проверять есть ли утечки памяти? Может есть какие-то специальные плагины для этого? C++
C++ Какие книги есть по Си++?
как узнать какие изменения произошли в 2 документах C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
27.07.2014, 12:20     Какие есть компиляторы c++ без изменения синтаксиса #2
Цитата Сообщение от kaheu Посмотреть сообщение
без изменения синтаксиса?
В каком смысле?
kaheu
 Аватар для kaheu
34 / 0 / 0
Регистрация: 19.08.2013
Сообщений: 246
27.07.2014, 12:22  [ТС]     Какие есть компиляторы c++ без изменения синтаксиса #3
Цитата Сообщение от 0x10 Посмотреть сообщение
В каком смысле?
не добавляющий новых команд
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
27.07.2014, 12:25     Какие есть компиляторы c++ без изменения синтаксиса #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
У компиляторов есть непереносимые на другие компиляторы расширения, это нормально. Просто не пользуйтесь ими.
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16825 / 5246 / 321
Регистрация: 30.03.2009
Сообщений: 14,126
Записей в блоге: 26
27.07.2014, 13:37     Какие есть компиляторы c++ без изменения синтаксиса #5
Цитата Сообщение от kaheu Посмотреть сообщение
не добавляющий новых команд
В этом смысле того, что ты хочешь, в природе скорее всего не существует. Любой промышленный компилятор содержит свои собственные расширения. Присоединяюсь к предыдущему оратору на тему того, что не нужно использовать расширения там, где они не нужны. А для этого нужно хорошо понимать стандарт языка
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
27.07.2014, 13:39     Какие есть компиляторы c++ без изменения синтаксиса #6
У многих компиляторов есть флаги, которые запрещают использовать расширения или, как минимум, оповещают об их присутсвии в коде.
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16825 / 5246 / 321
Регистрация: 30.03.2009
Сообщений: 14,126
Записей в блоге: 26
27.07.2014, 13:56     Какие есть компиляторы c++ без изменения синтаксиса #7
Возможно. У gcc, по крайней мере, нету никакой возможности работать на 100% без расширений
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
28.07.2014, 10:10     Какие есть компиляторы c++ без изменения синтаксиса #8
Разве -pedantic или -pedantic-errors вместе с -ansi что то могут пропустить?
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16825 / 5246 / 321
Регистрация: 30.03.2009
Сообщений: 14,126
Записей в блоге: 26
28.07.2014, 11:25     Какие есть компиляторы c++ без изменения синтаксиса #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% не уверен, что проблема именно такая
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
28.07.2014, 11:35     Какие есть компиляторы c++ без изменения синтаксиса #10
Понял, о чем Вы. Я имел ввиду явное расширение языка, а не вспомогательные функции компилятора. В любом случае, спасибо за разъяснения.
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16825 / 5246 / 321
Регистрация: 30.03.2009
Сообщений: 14,126
Записей в блоге: 26
28.07.2014, 15:34     Какие есть компиляторы c++ без изменения синтаксиса #11
typeof - это именно расширение языка, а никакая не функция. Такой же оператор, как и sizeof
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
28.07.2014, 18:03     Какие есть компиляторы c++ без изменения синтаксиса #12
typeof но не __typeof__. И я не имею ввиду, что это функция в смысле языка программирования. Если эти нестандартные операторы ( начинающиеся и заканчивающиеся "__" ) используются при флагах ansi и pedantic, то человек должен понимать, что он делает. Ну, по крайней мере, я на это надеюсь. Вы же сами сказали, что они работают только потому, что используются в системных библиотеках/заголовках и являются частью их реализации.
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16825 / 5246 / 321
Регистрация: 30.03.2009
Сообщений: 14,126
Записей в блоге: 26
28.07.2014, 18:39     Какие есть компиляторы c++ без изменения синтаксиса #13
Цитата Сообщение от Toshkarik Посмотреть сообщение
typeof но не __typeof__
В C89 нету typeof'а. А опция -ansi она эквивалентна -std=c89. Т.е. typeof в данном случае работает как расширение языка (хоть с подчерками, хоть без них)

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

Цитата Сообщение от Toshkarik Посмотреть сообщение
то человек должен понимать, что он делает
Я про то и говорю, что одними опциями не получится контролировать отсутствие расширений, нужно ещё и понимать, что ты делаешь
CyberSolver
 Аватар для CyberSolver
101 / 74 / 17
Регистрация: 23.07.2014
Сообщений: 686
Записей в блоге: 1
28.07.2014, 19:07     Какие есть компиляторы c++ без изменения синтаксиса #14
Цитата Сообщение от Toshkarik Посмотреть сообщение
Я имел ввиду явное расширение языка, а не вспомогательные функции компилятора
Конечно, никто не мешает написать C++++. Вот только все нормальные люди такое чудо не будут использовать. Потому что стандарт Си++ (да, наверное, и любой стандарт) явно запрещает расширять язык таким способом. Добавить всякие __FUNCNAME__, __typeof__ - можно. Поменять синтаксис - нет.
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16825 / 5246 / 321
Регистрация: 30.03.2009
Сообщений: 14,126
Записей в блоге: 26
28.07.2014, 19:36     Какие есть компиляторы c++ без изменения синтаксиса #15
Расширение языка - это более сложная вещь, чем дополнительное ключевое слово. Например, в C89 внутри лексического блока должны идти сначала описания переменных, и только потом операторы. А вот в gnu-расширении языка C89 их можно писать вперемешку (как в C++). При этом стандарт языка Си никак не может запретить gnu'шника (да и другим разработчикам) разрабатывать собственный стандарт языка
CyberSolver
 Аватар для CyberSolver
101 / 74 / 17
Регистрация: 23.07.2014
Сообщений: 686
Записей в блоге: 1
28.07.2014, 19:41     Какие есть компиляторы c++ без изменения синтаксиса #16
Цитата Сообщение от Evg Посмотреть сообщение
При этом стандарт языка Си никак не может запретить gnu'шника (да и другим разработчикам) разрабатывать собственный стандарт языка
Запретить, конечно, не может. Но если они изменят семантику, к примеру, try-catch, можно сразу и навсегда выкинуть сие... хм, поделие на мороз.

Вообще, это было первое, чему меня научили в Си++ (раньше чем using namespace std; ) - всё, что non-standart, - сразу в топку. А в стандарте ясно написано: любые изменения стандарта автоматически non-standart (привет, кэпы из ISO).
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
28.07.2014, 19:49     Какие есть компиляторы c++ без изменения синтаксиса #17
Одно дело, когда функция/оператор существует лишь для реализации компилятора и стандартной библиотеки, и другое, когда их делают для использования сторонними разработчиками. typeof и __typeof__, как мне кажется, наглядный пример. Именно это я и хотел сказать изначально. Не пойму, при чем тут изменение синтаксиса.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
28.07.2014, 19:50     Какие есть компиляторы c++ без изменения синтаксиса #18
Цитата Сообщение от CyberSolver Посмотреть сообщение
всё, что non-standart, - сразу в топку
Очень часто на необоснованно категоричные высказывания находится контрпример. Я просто напомню, что есть такой компилятор - nvcc (CUDA Toolkit), который как раз добавляет нестандартные расширения в язык. Не стоит все подряд отправлять "в топку".
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
28.07.2014, 19:51     Какие есть компиляторы c++ без изменения синтаксиса #19
Цитата Сообщение от 0x10 Посмотреть сообщение
Очень часто на необоснованно категоричные высказывания находится контрпример. Я просто напомню, что есть такой компилятор - nvcc (CUDA Toolkit), который как раз добавляет нестандартные расширения в язык.
Ну и тот же linux kernel, который везде и по всякому использует расширения gcc. И таких примеров куча.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.07.2014, 20:04     Какие есть компиляторы c++ без изменения синтаксиса
Еще ссылки по теме:

Компиляторы. Какие преимущества между "кнопкой" и консолью? C++
Какие есть GUI библиотеки для c++ C++
Какие независимые друг от друга изменения позволят коду отработать корректно? C++

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

Или воспользуйтесь поиском по форуму:
CyberSolver
 Аватар для CyberSolver
101 / 74 / 17
Регистрация: 23.07.2014
Сообщений: 686
Записей в блоге: 1
28.07.2014, 20:04     Какие есть компиляторы c++ без изменения синтаксиса #20
Цитата Сообщение от 0x10 Посмотреть сообщение
Я просто напомню, что есть такой компилятор - nvcc (CUDA Toolkit), который как раз добавляет нестандартные расширения в язык.
Ну так и пусть добавляет на здоровье. Только это и будет компилятор не C89 и не C99, а какой-то солянки Си с фичами nVidia. Топикстартер ведь говорил про расширение языка в смысле изменения семантики, а таких компиляторов просто нет.
Yandex
Объявления
28.07.2014, 20:04     Какие есть компиляторы c++ без изменения синтаксиса
Ответ Создать тему
Опции темы

Текущее время: 06:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru