Который является лучшим компилятором C++? [закрытый]

JavaScript: 55 символов

p=function(x){return (x==x.split('').reverse().join())}

Вышеупомянутое не будет работать, потому что необходимо звонить join с ""

JavaScript: 55 символов

function p(s){return s==s.split("").reverse().join("")}
13
задан citn 12 July 2009 в 12:56
поделиться

9 ответов

G ++ кажется самым популярным. Это бесплатно, портативно и неплохо. Порт Windows (MinGW) действительно был устаревшим, когда я использовал его в последний раз (возможно, год назад).

Компилятор Intel C ++ считается тем, который генерирует самый быстрый код (однако известно, что он генерирует плохой код SIMD для Процессоры AMD). Вы можете свободно использовать его в GNU / Linux при весьма ограниченных условиях.
Я использовал его в течение некоторого времени, и мне понравилось, что он выдает умные предупреждения, которых нет у других.

VC ++ часто считается лучшей IDE C ++, и, насколько я слышал, компилятор тоже неплох. Это бесплатно (как и бесплатное пиво) и, конечно же, доступно только в Windows.
Если вы интересуетесь программированием для Windows, я бы посоветовал этот компилятор, потому что он всегда актуален и предоставляет более продвинутые функции для этой цели.

Я бы порекомендовал VC ++ для Windows, G ++ для других ОС. Попробуйте бесплатную версию I ++ самостоятельно, чтобы убедиться, стоит ли она своих денег.


Существуют ли задокументированные случаи, когда компилятор производил некорректный вывод, что приводило к отказу критически важного программного обеспечения?

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

17
ответ дан 1 December 2019 в 22:40
поделиться

Since you mention "as part of a commercial airplane system" in a comment, it may be worthwhile looking at the compilers provided by companies that actually maintain certification in that space, or other safety-critical product spaces. Green Hills Software is one. Wind River is another.

3
ответ дан 1 December 2019 в 22:40
поделиться

Во-первых, какая платформа, которую вы используете, обычно определяет, какие компиляторы использовать.

Во-вторых, ваш вопрос о надежности и производительности. Я не понимаю, что вы подразумеваете под надежностью. но если вы имеете в виду правильность скомпилированных двоичных файлов, я должен сказать, что пока вы используете стабильную версию любого из упомянутых вами компиляторов, вы не столкнетесь с проблемами «надежности». Все эти компиляторы очень зрелые и использовались в бесчисленных реальных проектах. Так что я бы вообще не беспокоился о надежности.

Что касается производительности, то на этот вопрос сложно ответить, потому что каждый компилятор имеет разные методы оптимизации, которые теоретически могут давать разную производительность. Я надеюсь, что есть кто-то более знающий, чем я, который может рассказать вам об этом.

На самом деле, учитывая, что все компиляторы, о которых вы упомянули, являются высококачественными и зрелыми компиляторами, вам следует задать вопросы не о том, какой компилятор более надежен, а о следующем:

  • Какой компилятор поддерживает мою цель платформа
  • Какой компилятор хорошо работает с моей средой разработки и инструментами?
  • С каким компилятором моя команда разработчиков и интеграторы больше всего знакомы.

Однако вопрос о методах оптимизации остается открытым, и это притом нетривиальный вопрос. Я надеюсь, что некоторые могут пролить свет на это.

  • Какой компилятор поддерживает мою целевую платформу.
  • Какой компилятор хорошо работает с моей средой разработки и инструментами?
  • С каким компилятором моя команда разработчиков и интеграторы знакомы больше всего.

Вопрос о Однако методы оптимизации - это открытый вопрос, и притом нетривиальный. Я надеюсь, что некоторые могут пролить свет на это.

  • Какой компилятор поддерживает мою целевую платформу.
  • Какой компилятор хорошо работает с моей средой разработки и инструментами?
  • С каким компилятором моя группа разработчиков и интеграторы знакомы больше всего.

Вопрос о Однако методы оптимизации - это открытый вопрос, и притом нетривиальный. Я надеюсь, что некоторые могут пролить на это свет.

3
ответ дан 1 December 2019 в 22:40
поделиться

In addition to Bastien Léonard answer: There is one more multi-platform C++ compiler — Comeau. It is the most standards-conformant C++ compiler. Last version has C++0x core language support.

2
ответ дан 1 December 2019 в 22:40
поделиться

If you're talking about high performance of the output code in the High Performance Computing sense, you may also be interested in Portland Group's compilers and IBM's XL compilers.

1
ответ дан 1 December 2019 в 22:40
поделиться

Смысл оптимизирующего компилятора заключается в том, что он должен генерировать оптимизированную программу, функционально эквивалентную исходной. Функциональный эквивалент, конечно же, связан с наблюдаемыми эффектами; состояние естественно было бы другим. На мой взгляд, любой компилятор, который может генерировать неправильный перевод, плох, хотя я полагаю, что вы могли бы смягчить некоторые проблемы в разных ситуациях. Одним из преимуществ основного компилятора является то, что ошибки исправляются быстрее.

Что касается производительности, компиляторы обычно выполняют два типа оптимизаций: оптимизации, не зависящие от платформы (на уровне исходного кода / дерево синтаксиса / промежуточное представление), и оптимизации, специфичные для платформы.

Я полагаю, что лучшая независимая от платформы оптимизация, вероятно, заключается в различных академических модификациях существующих компиляторов (но, вероятно, в разных оптимизациях и в каждой). Эти оптимизации в конечном итоге признаются и в конечном итоге становятся популярными.

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

1
ответ дан 1 December 2019 в 22:40
поделиться

http://www.compilers.net/Dir/Free/Compilers/CCpp.htm

Microsoft has a good free compiler, but if you're working on unix or mac that will do you little good.

Borland has a good free compiler as well.

I have tried out several free compilers and feel most comfortable with the Dev-C++. The total package is relatively small in size and comes in windows and linux flavors. For me it is perfect to test out the limits of the C++ language. It compiles fast and makes experimentation easy.

I recommend you this software called Digital Mars C/C++ Compiler,and you can get it from http://www.brothersoft.com/digital-mars-… it is a free C/C++ compiler for the for Win32, Win16, DOS32 and DOS environment.

1
ответ дан 1 December 2019 в 22:40
поделиться

Какую платформу вы используете? Например, Visual C ++ не будет вам полезен в Linux.

На самом деле, три, которые вы упомянули, я бы выбрал по этим причинам.

gcc / g ++: открытый исходный код, проверенный, усовершенствованный благодаря многолетнему опыту совместной работы на многих системах Linux и UNIX. Не очень сильная сторона просто в том, что это автономный инструмент командной строки. Вы можете создать или, возможно, найти свою собственную среду в стиле IDE, но она, так сказать, не «поставляется» таким образом.

Visual C ++: хорошо поддерживается Microsoft, множество примеров кода и документации (MSDN), естественно подключается к Windows API. Не очень сильная сторона в том, что это не особенно, ну, "визуально". Если вы привыкли к Visual Basic (скажем), вы обнаружите, что Visual C ++ работает совсем не так.

Компилятор Intel C ++: увы, у меня нет опыта работы с компилятором Intel, но я полагаю, что он поддерживает параллелизм и имеет высокоточные числовые библиотеки.

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

1
ответ дан 1 December 2019 в 22:40
поделиться

Я обнаружил проблемы с использованием Cygwin, такого кода, который не компилируется, но генерирует ошибку сегментации внутри компилятора. Тот же код работает с MinGW.

[править] Вот отчет компилятора:

lista.h: In constructor `Lista<Dado>::Lista() [with Dado = int]':
principal.cpp:15:   instantiated from here
lista.h:13: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://cygwin.com/problems.html> for instructions.

У меня больше нет исходного кода, который вызвал ошибку, поэтому я не могу отправить отчет.

[/ edit]

-8
ответ дан 1 December 2019 в 22:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: