VS2005环境为例
一 C/C++设置
1.调试信息格式:
a.禁用
b.C7 兼容(/Z7)
c.程序数据库(/Zi)
d.用于“编辑并继续”的程序数据库(/ZI)
e.<从父级或项目默认设置继承>
疑问:/EDITANDCONTINUE:这个功能的原理在于调试时将所有函数的起始地址放到一个ILT(incremental link table)内存中,这样每个函数修改时不会影响到其它函数的地址或者说影响的机会很小。此处与d选项的关系是什么呢?为何在VS2005中没有找到单独的/EDITANDCONTINUE这个编译选项呢?
2.预编译头:
a.不使用预编译头
b.创建预编译头(/Yc)
c.使用预编译头(/Yu)
d.<从父级或项目默认设置继承>
预编译头是很多C/C++编译器使用的技术,其目的是用来减少编译的时间。
我们知道C/C++的头文件是通过#include这样的语句被包含在源文件中的,有些头文件很大,比如windows.h,每次编译都需要很长时间,为了节约时间,编译器可以把这些头文件处理成预编译头,它是一种编译器可以更快处理的中间形式,常见的后缀名是.pch和.gch。
举个例子,比如源文件game.cpp包含了math.h,当VC++第一次编译game.cpp的时候,并且打开了预编译头的选项,则编译器会生成预编译头math.pch,下一次编译game.cpp的时候,编译器可以不编译math.h而是直接使用math.pch,以节约编译时间;
二 连接器
1.增量链接 /INCREMENTAL :
参见本博客中的《link incrementally的作用》一文。