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
     允许精细调整一个工程的优化

版权声明:本文为博主总结文章,欢迎转载,请注明出处。

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

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

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

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

Visual studio 的C++编译器

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

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

【文章摘要】 Microsoft Visual C++是微软公司推出的、在Windows下的可视化集成编程系统,也是广大软件工程师使用得比较多的一款编程软件。本文主要讲述Visual C++编译...
  • zhouzxi
  • zhouzxi
  • 2013年12月27日 15:23
  • 2828

Visual C++ 编译器选项

  选项 目的 ...
  • kisserLeon
  • kisserLeon
  • 2007年04月04日 10:46
  • 588

Visual Studio 2012 - Visual C++ Pragma 指令和 __Pragma 关键字

Pragma和_Pragma
  • xidian208
  • xidian208
  • 2015年04月16日 20:27
  • 294

Visual Studio使用小技巧

1、vs常用工作环境配置 使用vs之前,需要进行一些常规的配置,以便更加方便自己的使用提高工作效率。字体应该配置为Consolas等宽字体,另外项背景色应设置为自定义淡蓝色(84,91,205),一说...
  • Arcsinsin
  • Arcsinsin
  • 2014年03月09日 15:48
  • 4924

Visual Studio 2010使用手册

Visual Studio 2010使用手册 用VS2010编译C++项目时出现这样的错误: LNK1123: 转换到 COFF 期间失败: 文件无效或损坏 解决方法:1、搜索C盘下的cvtres.e...
  • jackyip2011
  • jackyip2011
  • 2015年06月19日 15:55
  • 681

Microsoft Visual C++ 与 MinGW

这几天试用wxWidgets,分别用VC6和MinGW5编译通过,下面是一些记录。MinGW:根据我的理解,它是一个Windows下的编译器(实际上是一系列开发工具)。与Windows下其它编译器不同...
  • snaill
  • snaill
  • 2007年06月29日 23:56
  • 1957

下载: Microsoft Visual C++ Toolkit 2003

http://download.microsoft.com/download/3/9/b/39bac755-0a1e-4d0b-b72c-3a158b7444c4/VCToolkitSetup.exe...
  • naxin
  • naxin
  • 2005年05月23日 06:43
  • 5782
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Microsoft Visual Studio C++ 编译器选项设置
举报原因:
原因补充:

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