首页
社区
课程
招聘
[讨论]VC或Intel编译器,Debug模式下能否优化掉if (0)里面的代码?
发表于: 2014-6-3 17:33 6761

[讨论]VC或Intel编译器,Debug模式下能否优化掉if (0)里面的代码?

2014-6-3 17:33
6761
代码中大量的
#define XXX 0
if (XXX)
{
    callxxx();
}

这种写法,在Release模式下会被优化掉,不管callxxx函数是否存在
在Debug下有办法吗?
通过某设置,让所有if (0)里的代码都不编译或连接,但又不影响debug的特性

GCC是可以的

否则,大量的连接不过,不想过份的修改代码,更新维护会很麻烦

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (17)
雪    币: 272
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
尽量别打优化的注意,很不稳定(也许某个版本就改变优化策略了)
2014-6-3 18:13
0
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
就算是release 如果你的语法完全不对。也会报错吧。

callxxx 函数如果不存在会不报错?

优化是在语法检查后面的事。
2014-6-3 18:15
0
雪    币: 174
活跃值: (620)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
不会的,函数有定义,没有实现,表示为链接不过
release下把这种不需要的全被优化掉了,所以是没有任何问题的

但debug的最小模式都不能优化掉这种
2014-6-3 19:13
0
雪    币: 2120
活跃值: (73)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
还不如这样子

#define XXX 0
#if XXX
callxxx();
#endif
2014-6-3 19:29
0
雪    币: 3
活跃值: (47)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
vs优化选项调一下就可以了啊
2014-6-3 19:32
0
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
以下为你的原话

不管callxxx函数是否存在


是否存在跟是否实现是一回事吗? are you kidding me ?
2014-6-3 21:06
0
雪    币: 3933
活跃值: (2370)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
if (XXX)
->
#if (XXX)
#endif
2014-6-3 22:39
0
雪    币: 220
活跃值: (117)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
在if0里面#if dbg
2014-6-3 22:44
0
雪    币: 174
活跃值: (620)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
这样是可以呀,但开源工程中这种太多了,几千个,受不了啊
就算修改后,再更新也麻烦,
所以看有没有编译器上设置一下,全过的方法
2014-6-4 10:12
0
雪    币: 174
活跃值: (620)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
11
求哪个选项?
2014-6-4 10:20
0
雪    币: 174
活跃值: (620)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
12
我说的存在是指有声明,没有实现
就不纠结这个了吧?
2014-6-4 10:24
0
雪    币: 174
活跃值: (620)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
13
几千个修改受不了,要命
2014-6-4 10:25
0
雪    币: 174
活跃值: (620)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
14
同楼上,几千个修改要命
2014-6-4 10:27
0
雪    币: 3
活跃值: (47)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
刚开始没看到你说的要保存debug的特性,设置项是工程属性->c/c++->optimization,右侧有个optimization,release默认是O2,debug是disable,你设置成release的O2,不知道能不能符合你的要求。
2014-6-4 11:44
0
雪    币: 2120
活跃值: (73)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
16
全局替换下不就好了
2014-6-4 13:09
0
雪    币: 174
活跃值: (620)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
17
我本意是想保留debug特性,是指能正常调试
如果设置成o2后,代码调试/变量/断点都可能会出问题
所以,如果有直接能优化掉不需要的代码的开关就好了,中影响调试的
2014-6-4 15:31
0
雪    币: 3
活跃值: (47)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
那就不知道了,嘿嘿,你搞定了麻烦告诉我下,谢谢了
2014-6-4 18:17
0
游客
登录 | 注册 方可回帖
返回
//