Microsoft Visual Studio C++ 编译器选项设置

原创 2013年05月06日 20:16:58
 1、vc ->Project->Setting->C/C++ 的优化选项依赖与Category下拉框:
  • General
     提供了最有效的选择一个一般优化目标的方法,但不允许精细地控制单个优化技术
     在优化选项下有5种选择:Default、Disable(Debug)、Maximize Speed、Minimize Size和Customize。其中Disable关闭所有优化选项,当需要编译器执行一些所关切的更快速代码优化,而清除其他所有优化包括Disable时,可以使用Default。对于函数级连接和字符串假脱机,Customize优化选项提供了对优化开关的手工控制。
General Category的Maximize Speed 和 Minimum Size Settings
优化选项 Maximize Speed Minimum Seize
产生内部函数内联
快速代码优化
最小代码优化
全局优化启用
忽略帧指针
堆栈检查关闭
字符串假脱机启用
函数级链接启用
  • Code Generation
     选择针对处理器的优化和一个工程的缺省调用规范。
     
     CodeGeneration 包括用户现在的针对特殊处理器的优化选项、缺省的调用规、应用程序所使用的运行时类库以及成员结构的对其方式。
     选择处理器
          Processor选择指示编译器优化,缺省设置下是Blend表示一种折衷处理。
     选择调用规范
          Visual C++允许三种调用规范:__cdecl、__fastcall、__stdcall。调用规范决定了自左自右或者自右自左的参数传递。由谁负责清除堆栈以及函数名字解释。
          
调用规范 传送顺序 堆栈清除执行者 解释风格
__cdecl 自右自左 调用程序 _functionName
__fastcall 自右自左 被调用程序 @functionName@nnn
__stdcall 自右自左 被调用程序 _functionName@nnn
nnn----表示参数列表中的字节数
      (1) __stdcall调用  
          __stdcall是Pascal程序的缺省调用方式,参数采用从右到左的压栈方式,被调函数自身在返回前清空堆栈。WIN32 Api都采用__stdcall调用方式,这样的宏定义说明了问题: #define WINAPI _stdcall  按C编译方式,__stdcall调用约定在输出函数名前面加下划线,后面加“@”符号和参数的字节数,形如_functionName@nnn。

      (2) __cdecl调用 
          __cdecl是C/C++的缺省调用方式,参数采用从右到左的压栈方式,传送参数的内存栈由调用者维护。__cedcl约定的函数只能被C/C++调用,每一个调用它的函数都包含清空堆栈的代码,所以产生的可执行文件大小会比调用__stdcall函数的大。 由于_cdecl调用方式的参数内存栈由调用者维护,所以变长参数的函数能(也只能)使用这种调用约定。由于Visual C++默认采用__cdecl 调用方式,所以VC中中调用DLL时,用户应使用__stdcall调用约定。按C编译方式,__cdecl调用约定仅在输出函数名前面加下划线,形如_functionName。   

       (3) __fastcall调用  
          __fastcall调用较快,它通过CPU内部寄存器传递参数。(实际上,它用ECX和EDX传送前两个双字(DWORD)或更小的参数,剩下的参数仍旧自右向左压栈传送,被调用的函数在返回前清理传送参数的内存栈),按C编译方式,__fastcall调用约定在输出函数名前面加“@”符号,后面加“@”符号和参数的字节数,形如@@functionName@nnn
     选择运行时库
     选择结构对齐方式
  • Customize
     自动选择函数级的连接和字符串假脱机
  • Optimizations
     允许精细调整一个工程的优化

版权声明:本文为博主总结文章,欢迎转载,请注明出处。 https://blog.csdn.net/wangqiulin123456/article/details/8892221

从零开始使用Visual Studio 2017编译器 (一)

从零开始使用Visual Studio 2017编译器 (一)本篇博文记录一下我开始用Visual Studio 2017编写第一个C++代码“helloworld”的过程,主要有以下内容: Visu...
  • suay1113
  • suay1113
  • 2017-09-25 15:56:44
  • 15882

关于matlab安装Visual Studio 2010编译器的问题

环境:32位电脑,matlab2012b,Visual Studio 2010              真的是自己瞎折腾,关于matlab安装Visual Studio 2010编译器的问题搞了两...
  • sinat_23294087
  • sinat_23294087
  • 2015-05-29 14:59:05
  • 2027

[C++学习历程]Visual Studio 2010 中文旗舰版 安装

作者: 苏生米沿 本文地址: 要开始学习C++了,先装个开发环境吧,没有选择最新的2013版本,因为机器承受能力有限~嘿。先装个2010吧。想去官网下载的,后来发现官网下载的是学习版本,于是就使用度娘...
  • sushengmiyan
  • sushengmiyan
  • 2014-02-23 19:51:54
  • 2509

Microsoft Visual Studio C++/C语言编译器

  • 2013年03月21日 23:39
  • 54.67MB
  • 下载

C++的第一步:Visual Studio 6.0~2013 各版本编译器下载汇总

 Visual Studio 6.0~2013 各版本编译器下载汇总            Microsoft Visual Studio 6.0 下载 英文版:http://ww...
  • qq624269511
  • qq624269511
  • 2015-09-06 12:52:08
  • 358

Visual Studio 6/2005/2008/2010/2012/2013 各版本编译器 下载

////////////////////////////////////////////////////////////////////////////////// // 备注:本篇文章来自 vc驿...
  • net_syc
  • net_syc
  • 2014-06-16 11:39:29
  • 2373

按类别列出的编译器选项Visual Studio 2010

按类别列出的编译器选项Visual Studio 2010  其他版本 Visual Studio 2008 Visual Studio 2005 下面是一个完整的编译器选项分类列表。有关按...
  • Lyntion
  • Lyntion
  • 2014-10-02 15:29:06
  • 2073

visual studio编译器和链接器使用的环境变量

cl.exe和link.exe分别是visual studio IDE中的编译器和链接器,就像linux中的gcc编译器会用到环境变量去完成工作(include路径与lib路径等)一样,它们在工作时 ...
  • happyAnger6
  • happyAnger6
  • 2012-05-21 22:51:02
  • 7666

Visual studio 的C++编译器

最近研究了一下linux下面的C++编程,在命令行中进行编译C++代码;使用的是gcc编译器并最终生成 并对比visual stuio式那种傻瓜式的IDE,发现了Debug与Release的本质,项...
  • sipsipsip
  • sipsipsip
  • 2011-12-27 22:32:48
  • 5994

Visual C++编译器常用选项设置总结

【文章摘要】 Microsoft Visual C++是微软公司推出的、在Windows下的可视化集成编程系统,也是广大软件工程师使用得比较多的一款编程软件。本文主要讲述Visual C++编译...
  • zhouzxi
  • zhouzxi
  • 2013-12-27 15:23:06
  • 2887
收藏助手
不良信息举报
您举报文章:Microsoft Visual Studio C++ 编译器选项设置
举报原因:
原因补充:

(最多只允许输入30个字)