Visual Studio配置(5):项目属性页-C/C++(1)

C/C++:仅对当前项目有效

常规:数据库


附加包含目录:搜索包含文件的目录
其余#using指令:指定一些#using指令
调试信息格式:
无 不产生任何调试信息,所以编译较快
程序数据库(/Zi):产生并包含用于调试器的类型信息和符号调试信息的程序数据库(PDB)。不影响优化,暗示了debug。信息放在pdb文件而不是obj文件。
C7兼容(/Z7):生成包含用于调试器的完整符号调试信息的.obj文件。符号调试信息包括变量的名称和类型以及函数和行号。不会生成.pdb文件。
用于编辑并继续的程序数据库(/Zi):改了以后还能够继续调试,不少优化与这个并不兼容。
公共语言运行时支持:使用.NET运行时服务。
使用Windows运行时扩展:
取消显示使用版权标志:取消显示登陆版权标志,不知道是哪里的版权
警告等级
关 : 关闭全部警告(/W0) : 关闭全部警告消息的显示。 
1 级(/W1) : 显示严重的警告消息。 
2 级(/W2) : 显示等级 1 警告以及某些不太严重的警告,如关于隐藏类成员的警告。这是命令行中的默认警告等级。
3 级(/W3) : 显示等级 2 警告以及某些不太严重的警告,若有关老是计算为真或假的表达式的警告。 
4 级(/W4) : 显示全部等级 3 警告以及信息性警告。
--将警告视为错误:通常不须要这么严格
SDL检查:sdl(安全开发生命周期),这个东西在2012版推出的,为了更好监管开发者代码安全,会严格按照SDL的规则编译代码,会有一些之前经常使用的函数没法经过编译。

多处理器编译:针对多核使用的数组



====================================================缓存

优化:安全


/O 选项控制有助于建立具备最高速度或最小大小的代码的各类优化。
/O1 为得到最小大小而优化代码。
/O2 为得到最高速度而优化代码。
/Ob 控制内联函数展开。
/Od 禁用优化,从而加快编译并简化调试。
/Og 启用全局优化。
/Oi 为适当的函数调用生成内部函数。
/Os 通知编译器优选大小优化而非速度优化。
/Ot(默认设置)通知编译器优选速度优化而非大小优化。
/Ox 选择彻底优化。
/Oy 取消在调用堆栈上建立框架指针,以更快地进行函数调用。
框架


内联函数扩展:选择生成的内联函数扩展级别 
/Ob0 禁用内联扩展。默认状况下,扩展由编译器自行对全部函数进行(一般称为自动内联)。
/Ob1 仅容许对标记为 inline、__inline 或 __forceinline 的函数或是在类声明中定义的 C++ 成员函数中进行扩展。
/Ob2 默认值。容许对标记为 inline、__inline 或 __forceinline 的函数或是编译器选择的任何其余函数进行扩展。


启用内部函数:用有助于应用程序更快运行的内部函数或其余特殊形式的函数替换某些函数调用。
使用内部函数的程序比较快,由于它们没有函数调用系统开销。可是,因为建立了附加代码,它们可能比较大


优化大小和速度
/Os(代码大小优先)经过指示编译器优选大小而非速度来最小化 EXE 和 DLL 的大小。 编译器能够将许多 C 和 C++ 构造缩小为功能相似的机器码序列。 这些差别有时在大小和速度之间提供了折中。 /Os 和 /Ot 选项容许在两者之间指定一个首选项:
/Ot(代码速度优先)经过指示编译器优选速度而非大小来最大化 EXE 和 DLL 的速度。(这是默认设置。)编译器能够将许多 C 和 C++ 构造缩小为功能相似的机器码序列。 这些差别有时在大小和速度之间提供了折衷。 “最大化速度”(/O2) 选项隐含 /Ot 选项。 /O2 选项组合若干个选项以产生速度很是快的代码。
若是使用 /Os 或 /Ot,还必须指定 /Og 以优化代码。


省略帧指针:
此选项能够加快函数调用的速度,由于无需设置和移除任何框架指针。它还可使一个或多个寄存器(Intel 386 或更高版本上的 EBP)空闲出来,以便存储频繁使用的变量和子表达式。
/Oy 启用框架指针省略,而 /Oy- 禁止省略。 /Oy 仅在 x86 编译器中可用。
若是代码须要基于 EBP 进行寻址,能够在 /Ox 选项后指定 /Oy– 选项,或使用带“y”和 off 参数的 optimize,以便经过基于 EBP 的寻址得到最大程度的优化。 编译器可检测大部分须要基于 EBP 的寻址的状况(例如,使用 _alloca 和 setjmp 函数以及使用结构化异常处理的状况)。


启用纤程安全优化:
经过线程本地存储区 (TLS) 数组引用用 __declspec(thread) 声明的数据。 TLS 数组是系统为每一个线程维护的地址数组。 此数组中的每一个地址提供线程本地存储区数据的位置。
纤程是轻量对象,由堆栈和寄存器上下文组成,并可安排在各类线程上。 纤程能够在任意线程上运行。 由于纤程可能会交换出去而且稍后在不一样的线程上从新启动,因此 TLS 数组的地址不得缓存或优化为函数调用中的公共子表达式(有关详细信息,请参见 /Og(全局优化) 选项)。 /GT 阻止此类优化。


全程序优化:
全程序优化容许编译器用有关程序中全部模块的信息执行优化。 若是不执行全程序优化,则基于每一个模块 (compiland) 执行优化。
默认状况下,权全程序优化是关闭的,所以必须显式地启用它。 可是,也能够用 /GL- 显式地禁用它。
使用有关全部模块的信息,编译器可以:
跨越函数边界优化寄存器的使用。
更好地跟踪对全局数据的修改,容许减小加载和存储的数目。
更好地跟踪可能由取消指针引用所修改的项组,减小加载和存储的数目。
在模块中内联某个函数,即便该函数在另外一个模块中定义。
函数


=====================================================================================优化

预处理器:一些宏定义的相关操做命令行


预处理器定义:定义了一些宏
取消预处理器定义:估计填了就单个取消掉,为了方便调试代码
取消全部预处理器定义:取消了以前定义的全部宏
忽略标准包含路径:禁止编译器在INCLUDE环境变量指定的目录中搜索包含文件。
预处理到文件:预处理C和C++源文件并将预处理的输出写入到文件。此选项将取消编译,所以不会生成obj文件。
预处理取消显示行号:预处理时不使用#line指令。
保留注释:从源代码取消注释条,要求设置“预处理”选项之一
线程


=====================================================================================debug

相关文章
相关标签/搜索