关于“各种编译器的众多选项” 一条好消息:您不必担心大多数选项的细节。您将在适当的时候深入研究这一点,仅针对您使用的编译器,也许仅适用于与特定功能集相关的选项。但作为新手,一般信任默认选项或与make文件一起提供的选项。
该大类的这些特征(我可以缺少几个)为:
- 处理器预先定义(现在,可能需要几的这些)
- 代码生成(目标CPU ,FPU使用...)
- 优化(提示编译器有利于在速度和大小等)
- 包容的调试信息(这是留在物体额外的数据/二进制和使调试器知道在哪里每行代码开始,变量名称是什么等)
个
- 指示链接器
- 输出类型(EXE,图书馆,内存映射...)
- C/C++语言遵从性和警告(与以前版本的编译器,合规兼容当前和过去的C类标准,警告常见的可能的错误指示模式...)
- 编译时间冗长,并帮助
关于他们的编译器选项的清单,并设有
我知道没有这样的名单,但我敢肯定它可能存在于网络上。然而,建议作为一个新手,你不必担心这些“细节”,并使用你可以找到的任何免费编译器(gcc当然是一个很好的选择),并建立语言和构建过程的经验。 C专业人士可能会有充分的理由和充分的理由争论各种编译器和相关runtine等的优点,但为了通用目的 - 然后是一些 - 免费的东西就是所需要的。
关于构建过程
最琐碎的应用,例如这些由汇编的单个单元(读取单个的C/C++源文件),可以用简单的批处理文件来构建的,其中各种编译器和链接器选项是硬编码的,并且在命令行中指定文件的名称。
对于所有其他情况下,它编纂构建过程,以便它可以做到
一个)自动并
b)中可靠地,即具有可重复性是很重要的。
“配方”这一构建过程相关的往往是在封装make文件或作为复杂性的增加,可能的几个make文件,在脚本/ bat文件可能是“捆绑在一起。
这(让文件语法)您需要熟悉,即使您使用替代方法来制作/ nmake,例如Apache Ant;原因是许多(大多数?)源代码包都包含make文件。文本文件和他们允许定义目标,以及相关的命令建立一个目标,每个目标都与其dependenci相关ES,允许化妆逻辑来决定什么指标已经过时,应该重建,以及重建他们面前,有什么可能的依赖也应该被重建。这样,当你修改说一个包含文件(如果make文件被正确配置),其使用该头将被重新编译任何C文件,并与相应的obj文件链接将被重建以及任何二进制。令还包括选项强制所有目标进行重建,而这有时是方便的,以确保你真正拥有一个内置的电流(例如在的情况下给定对象的一些依赖不会在化妆声明)。
在预处理器上: 预处理器是编译的第一步,虽然它在技术上并不是编译的一部分。该步骤的目的是:
- 以除去任何评论,多余的空白
- 替代与有关C/C++语法任何宏参考。例如,一些宏用于定义常量值,例如在程序中使用某个电子邮件地址;期间每个处理这一恒定值的任何参考(顺便说一句按照惯例,例如常量命名为
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
,有点类似于留在自己房间的交换学生阅读韦伯斯特词典,以“准备好”会见母语人士,而不仅仅是“做!”。
来源
2009-11-21 05:01:44
mjv