我刚刚开始探索C ++,所以请原谅这个问题的新意。我也恳请你放纵这个问题的开放性。我认为它可以分解,但我认为这些信息属于同一个地方。
(仅供参考 - 我现在主要使用QT SDK和mingw32-make,我似乎已经为我的机器正确配置了它们。)
我知道语言中有很多是编译器驱动的 - 我听说过预编译器指令,但似乎有人能够编写不同C ++编译器及其各自参数的书籍。另外,有些命令显然位于make之前(例如qmake(仅在QT中是这样的))。
我想知道是否有任何地方可以让我了解编译器的概况,以及它们的不同选择。我也想知道他们每个人对Makefile的看法(似乎他们之间的语法有区别吗?)。
如果没有关于“你需要了解的关于C ++编译器的所有内容但又不敢问”的网站,那么学习这些问题答案的最佳方法是什么?
答案 0 :(得分:17)
答案 1 :(得分:3)
理想情况下,您不需要关心您正在使用的C ++编译器。近年来,标准的兼容性已经好得多(甚至来自微软)
编译器标志明显不同,但通常可以使用相同的功能,例如,它只是一个不同命名的选项。在GCC和ms-cl上设置警告级别
构建系统独立于编译器,您可以对任何编译器使用任何make。
答案 2 :(得分:3)
C++
编译器很像锤子:它们有各种尺寸和形状,具有不同的功能和特性,适用于不同类型的用户,并且价格不同;最终他们都要做与其他人一样的基本任务。
有些用于高度专业化的应用程序,如高性能图形,并且有许多扩展和库来帮助工程师解决这些类型的问题。其他用于通用目的,并不一定是极端工作的最佳选择。
使用每种类型的锤子的技术因型号和版本而异 - 但它们都有很多共同之处。宏预处理器是C和C ++编译器的标准部分。
许多C++
编译器的简要比较是here。另请查看C
编译器列表,因为许多程序不使用任何C ++功能,并且可以由普通C
编译。
C++
编译器不“查看”makefile。 makefile的规则可以调用C ++编译器,但也可以“编译”汇编语言模块(汇编),处理其他语言,构建库,链接模块和/或后处理对象模块。 Makefile通常包含清理中间文件,建立调试环境,获取源代码等的规则。编译是开发软件的一系列步骤中的一个环节。
此外,许多开发环境将makefile抽象为“项目文件”,integrated development environment(IDE)使用该文件试图简化或自动化许多编程任务。查看比较here。
至于学习:选择要解决和潜入的特定问题。目标平台(Linux / Windows /等)和问题空间将很好地缩小选择范围。您选择的内容通常与其他注意事项相关联,例如为特定公司工作或参与团队。 C ++在所有风格中都有95%的通用性。好好学习其中任何一个,学习下一个是小菜一碟。