Почему никто не обновляет свой компилятор C расширенными функциями? - PullRequest
0 голосов
/ 31 октября 2008
struct elem
{
 int i;
 char k;
};
elem user; // compile error!
struct elem user; // this is correct

В приведенном выше фрагменте кода мы получаем ошибку для первого объявления. Но эта ошибка не возникает с компилятором C ++. В C ++ нам не нужно снова и снова использовать ключевое слово struct.

Так почему никто не обновляет свой компилятор C, чтобы мы могли использовать структуру без ключевого слова, как в C ++?

Почему разработчик компилятора C не устраняет некоторые сбои C, такие как приведенный выше, и не обновляет некоторые расширенные функции, не нарушая первоначальную концепцию C?

Почему это тот же старый компилятор, не обновленный с 1970-х годов?

Посмотрите на visual studio и т. Д. Он часто обновляется новыми выпусками, и для каждого нового выпуска мы должны изучать использование некоторых новых функций (даже если это проблема, с которой мы можем справиться). Мы также получим обновление с новым компилятором, если таковой имеется.

Не воспринимайте это как глупый вопрос. Почему это не возможно? Он может быть разработан без каких-либо проблем несовместимости (не затрагивая код, который был разработан на нынешнем / старом компиляторе)

Хорошо, давайте разработаем новый язык C, C +, который находится между C и C ++, который устраняет все недостатки C и добавляет некоторые расширенные функции из C ++, сохраняя его полезным для конкретных приложений, таких как приложения системного уровня, встроенные системы и т. Д.

Ответы [ 16 ]

1 голос
/ 31 октября 2008

Ну

1 - Ни один из используемых сегодня компиляторов не относится к 70-м годам ...

2 - Существуют стандарты для языков C и C ++, и компиляторы разработаны в соответствии с этими стандартами Они не могут просто изменить свое поведение!

3 - Что произойдет, если вы разрабатываете на VS2008 и затем попытаетесь скомпилировать этот код другим компилятором, последняя версия которого была выпущена 10 лет назад?

4 - Что происходит, когда вы играете с опциями на вкладке C / C ++ / Language?

5 - Почему компиляторы Microsoft не нацелены на все возможные процессоры? Они предназначены только для x86, x86_64 и Itanium, вот и все ...

6 - Поверьте, это даже не считается проблемой !!!

1 голос
/ 31 октября 2008

Потому что C стандартизирован. Компилятор может предлагать эту функцию, а некоторые делают, но ее использование означает, что исходный код не соответствует стандарту и может быть скомпилирован только на компиляторе этого поставщика.

0 голосов
/ 03 ноября 2008

Если вы хотите писать в стандарте C, следуйте стандартам. Вот и все.

Если вы хотите больше свободы, используйте C # или C ++. NET или что-нибудь еще, что поддерживает ваше оборудование.

0 голосов
/ 31 октября 2008

Это звучит как концепция охватывают и расширяют . Жизнь по твоему сценарию.

  1. Я разрабатываю код, используя компилятор C, у которого удалены "глюки" C.
  2. Я перехожу на другую платформу с другим компилятором C, у которого удалены "глюки" C, но немного другим способом.
  3. Мой код не компилируется или работает по-другому на новой платформе, я трачу время на "перенос" своего кода на новую платформу.

Некоторым поставщикам на самом деле нравится устранять «глюки», потому что это приводит к блокировке людей на одной платформе.

0 голосов
/ 31 октября 2008

Что касается новых функциональных возможностей в новых выпусках, Visual C ++ не полностью соответствует стандартам (см. http://msdn.microsoft.com/en-us/library/x84h5b78.aspx),. К моменту выхода Visual Studio 2010, вероятно, будет утвержден следующий стандарт C ++, что даст VC ++ команда больше функциональности, чтобы изменить.

Есть также изменения в библиотеках Microsoft (которые имеют мало общего или не имеют ничего общего со стандартом) и в том, что выпускает компилятор (C ++ / CLI). Существует много возможностей для изменений, не пытаясь отклониться от стандарта.

Тебе не нужно ничего похожего на C +. Просто пишите на C, используйте любые функции C ++, которые вам нравятся, и компилируйте как C ++. Одна из первоначальных целей проектирования Бьярно Страуструпа для C ++ состояла в том, чтобы сделать ненужным писать что-либо на C. Это должно компилироваться совершенно эффективно, если вы ограничиваете используемые вами функции C ++ (и даже тогда будут компилироваться очень эффективно; современные компиляторы C ++ очень хорошо работа).

И оставшийся без ответа вопрос: зачем вам использовать нестандартный C, когда вы могли бы написать стандартный C или стандартный C ++ с почти равными возможностями?

0 голосов
/ 31 октября 2008

Вам не нужно разрабатывать новый язык, если вы хотите использовать C с C ++ typedefs и т.п. (но без классов, шаблонов и т. Д.).

Просто напишите свой C-подобный код и используйте компилятор C ++.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...