打印

有个疑问,#define放的多了,是否会降低效率呢

[复制链接]
1058|12
手机看帖
扫描二维码
随时随地手机跟帖
沙发
aozima| | 2016-6-27 19:22 | 只看该作者
预处理
编译
链接

所以不影响效率

使用特权

评论回复
板凳
jouney316| | 2016-6-28 07:26 | 只看该作者
用 #define 定义字面常量可能会浪费很多空间

使用特权

评论回复
地板
l科科1987| | 2016-6-28 20:42 | 只看该作者
比如在代码中使用 #define 定义了一个比较长的常量字符串,如果这个宏被使用了很多次,那么这个字面常量将会遍地开花,如果编译器没有那么聪明的话,可能会耗费很多不需要耗费的空间。

使用特权

评论回复
5
原味_郭| | 2016-6-29 08:47 | 只看该作者
用 #define 定义常量对象可能会执行多次构造函数而降低时间效率

使用特权

评论回复
6
ahhsyf| | 2016-6-29 11:23 | 只看该作者
#define WELCOME_MESSAGE string("Welcome!")
如果多次使用 WELCOME_MESSAGE 宏的话,将有可能每次遇到它们的时候都调用 class string 的 string(const char *) 构造函数。这样的话,不仅空间会被浪费,而且也会影响执行效率。

使用特权

评论回复
7
enginezhong| | 2016-6-29 17:18 | 只看该作者
#define 定义的“函数”“参数”也只是简单替换,不是省什么空间了

使用特权

评论回复
8
myidear| | 2016-6-30 09:47 | 只看该作者
不要用预处理定义常量。这样定义出来的常量不含类型信息,编译器只是会在编译前据此执行查找与替换操作。即时有人重新定义了常量值,编译器也不会产生警告信息,这将导致应用程序中得常量值不一致。

使用特权

评论回复
9
bairurui0713| | 2016-6-30 16:47 | 只看该作者
你可以试试,增加几个宏定义,看看内存是否会变化呢

使用特权

评论回复
10
kokofei| | 2016-6-30 19:21 | 只看该作者
预处理器仍将读入整个头文件,即使这个文件的内容会被忽略,这将拖慢编译速度。增加过多#define的结果是,编译会很慢很慢

使用特权

评论回复
11
Classover| | 2016-6-30 20:45 | 只看该作者
使用宏定义则在代码规模和速度方面都比函数更胜一筹

使用特权

评论回复
12
magicoctoy| | 2016-7-7 15:33 | 只看该作者
和使用函数相比,使用宏的不利之处在于每次使用宏时,一份宏定义代码的拷贝都会插入到程序中。除非宏非常短,否则使用宏会大幅度增加程序的长度。

使用特权

评论回复
13
tomyoct| | 2016-7-8 19:12 | 只看该作者
宏和函数的不同之处,可以看看c和指针中的介绍,介绍的很详细的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

73

帖子

0

粉丝