#define 篇

面试中最容易的比当属define这个东西我们平时写代码用来定义字面常量吧。

const和define(5点区别) 快省内存

首先对于这个而言define定义的叫字面常量,预处理时候就进行替换,不占任何内存空间。编译时期有多个拷贝。内存有多分。并且并不会进行任何类型的检查。他的错误只有在编译时期才会体现。不产生任何符号在符号表。

而对于const而言他在C++语言叫const int a=5常量c语言叫只读 变量我主要拿他和c++中的比较 首先在c++中常量是在编译时期替换内存中只有一份拷贝。要进行类型检查。其次。const最重要的一点如果是常量。他也是有内存。只是编译器在看到是常量,会放到常量表中。后面遇到后直接替换。所以你也可以这样说他是在编译时替换的。


inline 和define 快 并且有类似于模板一样的能力(5)

对于这两比较主要是在函数上体现。define预处理时候替换,内存中有多份拷贝。对于参数的类型不做任何的检查。并且因为它不是函数,无法对其进行调试。define可能会出现奇怪的现象

对于inline而言它是对编译器进行建议,有可能他不会展开。如果它可以展开。展开是在编译时期展开,并且因为他是函数他要对参数进行检查并且在debug模式下可以进行调试。不会出现奇怪的现象。



typedf和define (5)

首先万年老套路define是在预处理时候进行替换。不进行任何类型检查。编译时期才会发现错误

define不仅可以重新定义类型名并且可以作为编译开关字面常量。。。。宏函数作用域定义到撤销定义

typedef 少了好多他只是对一个已经有的类型进行重定义。作用于是限于定义他的作于域中编译时期。

对于定义常量指针类型define容易出现歧义

enum和define(参考const)

define和一般函数(参考inline)

总共这几种问题我们一种一种刨析。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值