首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

关于VC2008的编译优化功能:有没有部分不优化的方法,该如何处理

2012-05-15 
关于VC2008的编译优化功能:有没有部分不优化的方法VC的优化做的很不错,如选择最大化速度(/O2)的时候如下

关于VC2008的编译优化功能:有没有部分不优化的方法
VC的优化做的很不错,如选择"最大化速度(/O2)"的时候如下一段代码

C/C++ code
int a=0xC6;void CEncodeTestDialog::OnBnClickedButton1(){    int b=::rand();    if(a>b)    {        ::MessageBoxA(0,"jj","kkk",0);    }}

被编译成:
Assembly code
int a=0xC6;void CEncodeTestDialog::OnBnClickedButton1(){    int b=::rand();00401390 E8 6E CC 01 00   call        rand (41E003h)     if(a>b)00401395 3D C6 00 00 00   cmp         eax,0C6h 0040139A 7D 14            jge         CEncodeTestDialog::OnBnClickedButton1+20h (4013B0h)     {        ::MessageBoxA(0,"jj","kkk",0);0040139C 6A 00            push        0    0040139E 68 C0 7E 43 00   push        offset string "kkk" (437EC0h) 004013A3 68 C4 7E 43 00   push        offset string "jj" (437EC4h) 004013A8 6A 00            push        0    004013AA FF 15 D0 24 43 00 call        dword ptr [__imp__MessageBoxA@16 (4324D0h)]     }


语句a>b被编译成了 cmp eax,0C6h 
变量a被VC直接替换成了一个常数出现在指令里.这样执行速度会变快,但是在有些地方并不希望常数出现在指令里.如在一些验证软件授权的地方,可能被别人用CE搜索一下就定位到验证的地方.所以我想在VC里有没有哪个语句可以阻止VC优化指定的一段代码(但是整个程序还是要让它优化)

[解决办法]
可以的, 在解决方案里面找到c或者c++文件右键, 选择属性, 可以单独对单个文件设置编译选项
[解决办法]
C/C++ code
#pragma optimize( "", off )...#pragma optimize( "", on ) 

热点排行