哪个是最好的C++;编译程序? < C++编译器能产生一个不那么好的二进制吗?您可以在这里考虑输出的健壮性和性能。有没有“最佳”C++编译器使用的东西?如果不是,那么有哪些优点,当然,不是著名的编译器(G++,英特尔C++编译器,Visual C++等)的不太强(已知的bug和问题)点。
是否有记录在案的情况下,编译器产生了不正确的输出,导致关键任务软件出现故障?我使用Cygwin发现了问题,这种代码不编译,但在编译器内部生成了分段错误。同样的代码也适用于MinGW [edit]这是编译器报告:哪个是最好的C++;编译程序? < C++编译器能产生一个不那么好的二进制吗?您可以在这里考虑输出的健壮性和性能。有没有“最佳”C++编译器使用的东西?如果不是,那么有哪些优点,当然,不是著名的编译器(G++,英特尔C++编译器,Visual C++等)的不太强(已知的bug和问题)点。,c++,compiler-construction,mission-critical,C++,Compiler Construction,Mission Critical,是否有记录在案的情况下,编译器产生了不正确的输出,导致关键任务软件出现故障?我使用Cygwin发现了问题,这种代码不编译,但在编译器内部生成了分段错误。同样的代码也适用于MinGW [edit]这是编译器报告: lista.h: In constructor `Lista<Dado>::Lista() [with Dado = int]': principal.cpp:15: instantiated from here lista.h:13: internal compiler
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.
lista.h:在构造函数'lista::lista()[with Dado=int]'中:
principal.cpp:15:从此处实例化
lista.h:13:内部编译器错误:分段错误
请提交完整的bug报告,
如果合适,使用预处理源。
有关说明,请参阅。
我已经没有生成错误的源代码了,所以我无法提交报告
[/edit]首先,您使用的平台通常决定要使用哪些编译器 第二,关于健壮性和性能的问题。我不知道你说的稳健性是什么意思。但如果你指的是编译后的二进制文件的正确性,我不得不说,只要你使用的是你提到的任何编译器的稳定版本,你就不会遇到“健壮性”问题。这些编译器都非常成熟,已经在无数实际项目中使用过。所以我根本不担心健壮性 关于性能,这是一个很难回答的问题,因为每个编译器都有不同的优化技术,理论上可以产生不同的性能。我希望有比我更博学的人能告诉你这件事 实际上,考虑到您提到的编译器都是高质量和成熟的编译器,您应该问的问题不是哪个编译器更健壮,而是:
- 哪个编译器支持我的目标平台
- 哪个编译器与我的开发环境和工具配合得很好
- 哪个编译器是我的开发团队和集成商最熟悉的
优化技术的问题是一个开放的问题,然而,这是一个不平凡的问题。我希望有人能对此有所了解。您使用的平台是什么?例如,VisualC++在Linux上是没有用的。 事实上,出于这些原因,你提到的三个是我会选择的三个 gcc/g++:开源,经过多年在许多Linux和UNIX系统上的协作经验验证和完善。不那么强大的一点仅仅是它是一个独立的命令行工具。您可以创建或可能找到自己的IDE风格的环境,但可以说,它不是以这种方式“发布”的 Visual C++:受Microsoft的良好支持,大量的代码示例和文档(MSDN)自然地连接到Windows API中。不那么强的是,它不是特别好的“视觉”。如果你习惯了Visual Basic(比如说),你会发现Visual C++没有同样的工作方式。 <>英特尔C++编译器:唉,我对英特尔编译器没有经验,但我相信它支持并行性,并且有高精度的数值库。
另一个可能值得一提的是Borland的C++Builder。它是一个加上一个快速应用开发环境,通过与Delphi的VCL兼容,拥有丰富的附加控件,但是相反,在C++ Builder中开发的代码不容易移植到其他C++编译器。它是免费的,便携的,而且很好。Windows端口(MinGW)在我上次使用它时已经过时了(可能是一年前)
英特尔C++编译器被认为是生成最快代码的一个(但它知道它为AMD处理器生成坏的SIMD代码)。
您可以在相当严格的条件下在GNU/Linux上自由使用它。
我已经使用它一段时间了,我喜欢它发出聪明的警告,而其他人却没有
VC++常常被认为是最好的C++ IDE,从我听说的编译器也很不错。它是免费的(就像免费啤酒一样),当然只能在Windows上使用。
如果您对Windows编程感兴趣,我建议使用此编译器,因为它始终是最新的,并为此提供了更高级的功能
当编译器产生不正确的输出导致任务关键型软件失败时,是否有记录在案的案例
是的,可能吧,但我要说的是,大多数时候这可能是程序员的错。例如,如果有人不知道浮点运算是如何工作的,那么很容易编写不可靠的代码。一个好的程序员也必须知道什么是保证的工作由C++标准和什么不是。程序员还应该知道编译器的限制是什么,例如,它执行标准的效果如何,优化的力度有多大。由于您在评论中提到了“作为商用飞机系统的一部分”,可能值得一看在该领域实际维护认证的公司提供的编译器,或其他安全关键产品空间。这是一个。是另一个。如果您谈论的是高性能计算意义上的输出代码的高性能,您可能还对和感兴趣。优化编译器的要点是,它应该生成一个功能等同于原始编译器的优化程序。当然,功能等同与可观察的效果有关;国家自然会不一样。任何编译器t