VC 编译参数介绍

VC编译器的编译链接参数非常之多,对程序生成在细节上的控制也是非常强大的。要深入了解编译器参数是比较困难的,但作个初步认识还是不太难。

编译参数可以在Project Setting中查看(Project菜单再选择Setting),如下图:

 

这些参数究竟代表什么意思了?可以通过在CMD窗口下输入cl /help(注1)查看各个参数的含义。

          C/C++ COMPILER OPTIONS

                        -OPTIMIZATION-优化

/O1 minimize space               /Op[-] improve floating-pt consistency

/O2 maximize speed                /Os favor code space

/Oa assume no aliasing              /Ot favor code speed

/Ob<n> inline expansion (default n=0) /Ow assume cross-function aliasing

/Od disable optimizations (default)     /Ox maximum opts. (/Ogityb1 /Gs)

/Og enable global optimization        /Oy[-] enable frame pointer omission

/Oi enable intrinsic functions

 

                         -CODE GENERATION-代码生成

/G3 optimize for 80386                 /Gy separate functions for linker

/G4 optimize for 80486                 /Ge force stack checking for all funcs

/G5 optimize for Pentium               /Gs[num] disable stack checking calls

/G6 optimize for Pentium Pro            /Gh enable hook function call

/GB optimize for blended model (default)  /GR[-] enable C++ RTTI

/Gd __cdecl calling convention          /GX[-] enable C++ EH (same as /EHsc)

/Gr __fastcall calling convention         /Gi[-] enable incremental compilation

/Gz __stdcall calling convention         /Gm[-] enable minimal rebuild

/GA optimize for Windows Application   /EHs enable synchronous C++ EH

/GD optimize for Windows DLL         /EHa enable asynchronous C++ EH

/Gf enable string pooling               /EHc extern "C" defaults to nothrow

/GF enable read-only string pooling      /QIfdiv[-] enable Pentium FDIV fix

/GZ enable runtime debug checks        /QI0f[-] enable Pentium 0x0f fix

 

                         -OUTPUT FILES-输出文件

/Fa[file] name assembly listing file     /Fo<file> name object file

/FA[sc] configure assembly listing      /Fp<file> name precompiled header file

/Fd[file] name .PDB file              /Fr[file] name source browser file

/Fe<file> name executable file         /FR[file] name extended .SBR file

/Fm[file] name map file

 

                         -PREPROCESSOR-预处理器

/C don't strip comments               /FI<file> name forced include file

/D<name>{=|#}<text> define macro     /U<name> remove predefined macro

/E preprocess to stdout                /u remove all predefined macros

/EP preprocess to stdout, no #line       /I<dir> add to include search path

/P preprocess to file                  /X ignore "standard places"

 

                         -LANGUAGE-语言

/Zi enable debugging information        /Zl omit default library name in .OBJ

/ZI enable Edit and Continue debug info /Zg generate function prototypes

/Z7 enable old-style debug info         /Zs syntax check only

/Zd line number debugging info only     /vd{0|1} disable/enable vtordisp

/Zp[n] pack structs on n-byte boundary   /vm<x> type of pointers to members

/Za disable extensions (implies /Op)     /noBool disable "bool" keyword

/Ze enable extensions (default)

 

                         -MISCELLANEOUS-杂项

/?, /help print this help message        /V<string> set version string

/c compile only, no link               /w disable all warnings

/H<num> max external name length     /W<n> set warning level (default n=1)

/J default char type is unsigned         /WX treat warnings as errors

/nologo suppress copyright message     /Yc[file] create .PCH file

/Tc<source file> compile file as .c      /Yd put debug info in every .OBJ

/Tp<source file> compile file as .cpp    /Yu[file] use .PCH file

/TC compile all files as .c             /YX[file] automatic .PCH

/TP compile all files as .cpp           /Zm<n> max memory alloc (% of default)

 

                        -LINKING-链接

/MD link with MSVCRT.LIB       /MDd link with MSVCRTD.LIB debug lib

/ML link with LIBC.LIB           /MLd link with LIBCD.LIB debug lib

/MT link with LIBCMT.LIB        /MTd link with LIBCMTD.LIB debug lib

/LD Create .DLL                 /F<num> set stack size

/LDd Create .DLL debug libary      /link [linker options and libraries]

 

全英文看着慢,其实在MSDN上可以找到中文说明。运行MSDN后,点击“目录”再在右边选择——开发工具和语言-->Visual Studio文档-->Visual C++-->生成C/C++程序-->C/C++生成参考-->编译C/C++程序-->编译器选项。下图展示了MSDN对编译器选项的说明,当然登录MSDN的网站也可以得到相同的信息。

 

 

下一篇将详细解释VC编译器在Debug和Release设置下编译参数的区别

 

 

 

注1.cl.exe 是一种控制 Microsoft C 和 C++ 编译器和链接器的工具。编译器产生通用对象文件格式 (COFF) 对象 (.obj) 文件。 链接器产生可执行文件 (.exe) 或动态链接库文件 (DLL)。更多内容可以访问MSDN的网站

 

 

 

 

转载请标明出处,原文地址:http://www.cnblogs.com/morewindows/archive/2011/08/29/2158807.html

时间: 2024-08-02 08:23:43

VC 编译参数介绍的相关文章

VC命令行编译参数介绍

CL.exe是控制Microsoft C和C++编译器与链接器的32位工具.编译器产生通用对象文件格式(COFF)对象(.obj)文件.链接器产生可执行文件(.exe)或动态链接库文件(DLL). 注意,所有编译器选项都区分大小写.        若要编译但不链接,请使用/c.        使用NMAKE生成输出文件.       使用BSCMAKE支持类浏览.       以下是一个完整的编译器选项分类列表.       优化       选项   作用     /O1   创建小代码   

VC实现ODBC数据库操作实例解析_C 语言

本文以VC实例介绍了实现数据库操作的各种方法,包括打开数据库.关联记录集.读取Excel数据.执行SQL查询.创建存取字符串等,相信对于初学VC的朋友有一定的参考价值,主要功能代码如下: //打开数据库 CDatabase database; database.OpenEx( _T( "DSN=zhuxue" ),CDatabase::noOdbcDialog);//zhuxue为数据源名称 //关联记录集 CRecordset recset(&database); //查询记

介绍一款VC辅助开发工具VcExtend

VcExtend 扩展了VC6.0的功能,包括函数体批生成.数据接口自动生成,注释可隐可现, 注释自动生成文档等功能,可以大大提高VC的工作效率. VcExtend使用VC60的扩展宏接口 ,采用VBScript编写,使用起来跟VC本身的命令几乎没有区别.VcExtend完全公开源代码, 可以无偿使用和修改. 下边介绍几个主要的命令: 建立新类:生成干净清爽 的类框架,代码模板可自由修改. 代码整理:为函数声明生成函数体,为成员变量生 成读写接口(包括声明和实现),将函数体按声明的顺序重排序.这

VC命令行编译参数简介

CL.exe   是控制   Microsoft   C  和   C++  编译器与链接器的   32  位工具.编译器产生通用对象文件格式   (COFF)  对象   (.obj)  文件.链接器产生可执行文件   (.exe)  或动态链接库文件   (DLL).     注意,所有编译器选项都区分大小写.     若要编译但不链接,请使用   /c.     使用   NMAKE  生成输出文件.     使用   BSCMAKE  支持类浏览.     以下是一个完整的编译器选项分类

VC++通用GIS功能开发解决方案2.0v介绍

综述 <VC++通用GIS功能开发解决方案>源代码是基于VC++6.0 MFC 类库,在Win2000平台上开 发的.界面部分用到了较低版本的 CJ60Lib 开放源码库,用户可自行替换高版本或其他界面 库,它不作为本方案的商业部分. <VC++通用GIS功能开发解决方案>源代码是迄今为止公开提供的最全面.最完善的开发 GIS产品的一套基础解决方案.它的界面十分友好和具人性化,它传承了"VC++界面一揽 子解决方案"最具经典的界面个性,并融合了该产品自身特有的亮

VC++界面一揽子解决方案(第三版)介绍

引言 "酒香不怕巷子深"并不是在任何情况下都适用!至少在这个时代! 同样,一个只具功能而不具人性化界面的软件不足为用!别具一格的程序外观足以影响用户的选择.拥有友好而富于个性的用户界面的软件,又往往具有更强的功能.漂亮的界面有利而无弊! 一些和作者一样,作为从事VC++底层开发的中国软件事业的开拓者,默默地辛勤耕耘在自己的一片土地上.VC++是个博大精深的知识库,而我们实在没有足够的精力去驾驭它!在此,作者将许多界面开发技术加以整理.分类.集成,并呈献出来,希望他能帮您节省宝贵的时间和

VC++动态链接库(DLL)非MFC DLL介绍

  4.1一个简单的DLL 第2节给出了以静态链接库方式提供add函数接口的方法,接下来我们来看看怎样用动态链接库实现一个同样功能的add函数. 如图6,在VC++中new一个Win32 Dynamic-Link Library工程dllTest(单击此处下载本工程附件).注意不要选择MFC AppWizard(dll),因为用MFC AppWizard(dll)建立的将是第5.6节要讲述的MFC 动态链接库. 图6 建立一个非MFC DLL 在建立的工程中添加lib.h及lib.cpp文件,源

VC 6编译生成文件介绍

clw文件记录了类的信息,如果classView中某个类不见了,重新生成该文件就可以了,方法:删除此文件,点击"建立类向导",根据提示输入工程名称就可以了: .ncb文件记录了类的提示信息,如果类的成员函数和变量的提示不见了,重新生成该文件即可,方法同上: .aps文件记录了资源信息,要利用现成的资源,需要修改3个文件,.rc文件,Resource.h文件和.aps文件,.aps直接删除后,进入程序,VC会自动生成. opt是保存界面信息的文件,比如workplace,编辑器打开的那个

接触VC之二:MFC类基础,C++程序编写规范介绍

由于本文是面对C语言基础的(因为我就是从C学起来的),而MFC是利用C++类技术构建起来的.因此有必要在此为只了解C的朋友们,普及一下C++语言中类的概念.熟悉C++的朋友可以跳过本部分.从总体来说C++是向下兼容C的,你可以很不费力气地将用C编好了的程序拿到C++环境下编译执行.其C++只不过是在C的基础上添加面向对象技术(OOP),也就是类的概念,且值得一提的是C与C++都是由美国的贝尔实验室(在之前我只知道发明过电话)发明的. 一.什么是类? 按一些书本上的定义来说"就是一种复杂的数据类型