网站大量收购闲置独家精品文档,联系QQ:2885784924

VC命令行编译C++..doc

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
VC命令行编译C.

编译器 cl.exe 连接器 mlink.exe 编译格式: cl [option...] file... [option | file]... [lib...] [@command-file] [/link link-opt...] option是编译参数 file是编译的源文件 lib是程序需要的依赖库 command-file是命令行文件 当命令行参数过长,CMD不支持时,可将一部分命令移到文件中,附加该文件使得文件中的命令有效 link-opt 是链接选项,在输入/link后输入链接选项,则可以把这些选项传递给链接器。 注意:在格式中[option] file [option] file 虽然是options是分开了,但是所有的options都是同时作用于所有file的。 例如 cl /MT main.cpp /LD submain.cpp 的意思是 /MT /LD同时对这个两个文件起作用。相同的/互斥的参数,以后出现的为准。 例如 cl /Fo”src\\” main.cpp /Fo”symbol\\” submain.cpp 生成的obj文件都会放在symbol文件夹下。 下面介绍编译器(cl)的参数(options) 有些参数后面标记过期,该参数在VS2005下仍然有效,但是在后续版本中可能会被删除。在VS2005中可能会有其他参数来代替过期参数,在各个过期参数中会有说明。 优化选项: /O1 体积最小优化 相当于/Og /Os /Oy /Ob2 /Gs /GF /Gy的组合 /O2 速度最快优化 相当于/Og /Oi /Ot /Oy /Ob2 /Gs /GF /Gy的组合 /Ob 扩展inline函数。 /Ob0 禁用内联。默认值。 /Ob1 仅仅内联被标识为 inline,__inline __forceinline,在class定义中写函数实现 的函数。 例如class CTest { public: int GetInt() { return m_iInt; } private: int m_iInt; } 该函数在/Ob1的参数下,会被编译成内联函数。 /Ob2 包含/Ob1的情况,并且编译器会把可以编译成内联,但是没有加上inline关 键字的函数内联。 /Oy 省略帧指针。该参数被/O1 /O2 /Ox包含,如果需要使用帧指针,可以在后面加上/Oy-,即可使/Oy失效,该参数仅在x86下有效。 /Od 禁用Debug,加快编译速度,简化调试功能。 /Og 过期 全局优化 包括表达式省略和循环优化。 表达式省略: a = b + c; d = b + c; e = b + c; 在该优化下,b+c的值只计算一次存入临时变量。 循环优化: i = -100; while(i0) { i += x + y; } 在该优化下,x + y的值会先计算出来,等效于: i = -100; t = x + y; while(i0) { i += t; } /Oi 用函数体替换函数调用。编译器会将内建函数的函数体替换掉函数调用语句,这样 可以避免函数调用时的开销提高运行速度,但是扩大了代码长度。只有内建的函数 才能被替换。库函数中的内建函数如下: _disable _outp fabs strcmp _enable _outpw labs strcpy _inp _rotl memcmp strlen _inpw _rotr memcpy _lrotl _strset memset _lrotr abs strcat 内建函数不存在于库中,而存在于编译器中。 /Os 代码长度优化 /Ot 运行速度优化 以上两个优化只能取一种 例子: 对于函数 int differ(int x) { return x * 71; } 如果选择/Os 代码长度优化,则编译为 mov eax, DWORD PTR _x$[ebp] imul eax, 71 ;长度很短,但是该计算比较慢 如果选择/Ot 运行速度优化,则编译为 mov eax, DWORD PTR _x$[ebp] mov ecx, eax shl eax, 3 lea eax, DWORD PTR [eax+eax*8]

文档评论(0)

bhzs + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档