当前位置:  开发笔记 > 编程语言 > 正文

关于C++编译器,我在哪里学习"我需要了解的内容"?

如何解决《关于C++编译器,我在哪里学习"我需要了解的内容"?》经验,为你挑选了1个好方法。

我刚刚开始探索C++,所以请原谅这个问题的新意.我也恳请你放纵这个问题的开放性.我认为它可以分解,但我认为这些信息属于同一个地方.

(仅供参考 - 我现在主要使用QT SDK和mingw32-make,我似乎已经为我的机器正确配置了它们.)

我知道语言中有很多是编译器驱动的 - 我听说过预编译器指令,但似乎有人能够编写不同的C++编译器及其各自的参数.另外,有一些命令显然在make之前(例如qmake(这只是在QT中的东西)).

我想知道是否有任何地方可以让我了解编译器的概况,以及它们的不同选择.我也想知道他们每个人对Makefile的看法(看起来他们之间的语法有差异吗?).

如果没有关于"你需要了解的关于C++编译器的所有内容但又不敢问"的网站,那么学习这些问题答案的最佳方法是什么?



1> mjv..:

关于"各种编译器的众多选项" 一条好消息:你不必担心大多数这些选项的细节.您将在适当的时候深入研究这个,仅适用于您使用的编译器,并且可能仅适用于与特定功能集相关的选项.但作为新手,通常会信任默认选项或make文件提供的选项.

这些功能的广泛类别(我可能会遗漏一些)是:

预处理器定义(现在,您可能需要其中一些)

代码生成(目标CPU,FPU使用......)

优化(编译器提示速度超过大小等的提示)

包含调试信息(这是在对象/二进制文件中留下的额外数据,它使调试器能够知道每行代码的起始位置,变量名称是什么等)

链接器的指令

输出类型(exe,库,内存映射......)

C/C++语言合规性和警告(与先前版本的编译器兼容,符合当前和过去的C标准,警告常见的可能的错误指示模式......)

编译时冗长和帮助

关于编译器及其选项和功能的清单,
我知道没有这样的列表,但我确信它可能存在于网络上.但是,建议作为一个新手你几乎不用担心这些"细节",并使用你能找到的任何免费编译器(gcc当然是一个很好的选择),并用语言和构建过程构建经验.C专业人员可能会有充分的理由和长篇大论地讨论各种编译器和相关的runtine等的优点,但是出于通用目的 - 然后一些 - 免费的东西就是所需要的.

关于构建过程
最简单的应用程序,例如由单个编译单元组成(读取单个C/C++源文件),可以使用简单的批处理文件构建,其中各种编译器和链接器选项都是硬编码的,并且文件名在命令行中指定.
对于所有其他情况,编制构建过程非常重要,以便可以
  a)自动和
  b)可靠地完成,即具有可重复性.
与此构建过程相关联的"配方"通常封装在make文件中,或者随着复杂性的增加,可能是几个make文件,可能"捆绑在一个脚本/ bat文件中.
这个(make文件语法)你需要熟悉即使您使用make/nmake的替代品,例如Apache Ant;原因是许多(大多数?)源代码包都包含一个make文件.
简而言之,make文件是文本文件,它们允许定义目标,以及用于构建目标的相关命令.每个目标都与其依赖关联,这允许make逻辑决定哪些目标已过期并且应该重建,并且在重建它们之前,还应该重建哪些可能的依赖项.这样,当你修改说一个包含文件时(如果make文件配置正确),任何使用这个头文件的c文件都将被重新编译,并且任何与相应obj文件链接的二进制文件也将被重建.make还包括强制所有文件的选项目标 要重建,这有时很方便,以确保你真正有一个当前构建(例如在一个给定的对象的某些依赖关系未在make中声明).

在预处理器上:预处理器是编译的第一步,虽然它在技术上不是编译的一部分.此步骤的目的是:

删除任何评论和无关的空白

用相关的C/C++语法替换任何宏引用.例如,某些宏用于定义常量值,例如程序中使用的某些电子邮件地址; 在每次处理期间,对此常量值的任何引用(按照惯例,btw这样的常量都以其命名ALL_CAPS_AND_UNDERSCORES)将替换为包含电子邮件地址的实际C字符串文字.

排除所有不相关的条件编译分支(#IFDEF等)

关于预处理器的重要事项是,预处理器指令不是C语言本身的一部分,它们提供了几个重要的功能,例如前面提到的条件编译(例如用于具有多个版本的程序) ,比如针对不同的操作系统,或者确实针对不同的编译器)

从那里开始...... 在我的这个宣言之后...我鼓励阅读但更多,并深入编程和构建二进制文件. It is a very good idea to try and get a broad picture of the framework etc. but this can be overdone,有点类似于留在他/她房间的交换学生阅读韦伯斯特字典,以便为与母语人士会面做好"准备",而不仅仅是"做它!".

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有