#define
与typedef
究竟有什么用?
看下面的代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
//code
}
这段代码的用处是,在之后的代码中,如果有ll
则会自动替换成long long
。
而#define
的用法刚好调换了位置:
#include<bits/stdc++.h>
using namespace std;
#define ll long long;
int main(){
//code
}
这段代码与上一段的作用基本相同。
总之,#define
与typedef
是为了让我们的编程过程中更方便。比如,如果一道题目中需要打很多遍long long
,我们加上一行代码,之后就可以用ll
代替了。
温馨提示:这两段代码在一些重要考试的时候尽量不用,有些时候会爆 0 !!!
2.#define
与typedef
有什么区别?
typedef
是关键字,对已经存在的数据类型取别名。
在编译阶段处理,会进行类型检查,只能在定义的作用域内使用。
define
是预处理指令(宏定义),只进行简单的字符替换,是否产生错误要在编译时才可知。
没有作用域限制,可以对类型/变量/常量等进行替换。
因此,相对来说,#define
只是单纯的字符替换。而对于程序的运行来说,这实际上是一个大大的缺点。而typedef
则更加安全。
总结
#define
与typedef
的功能大同小异,都是进行代码中的字符转换,但在程序运行方面来说,本人更推荐使用typedef
。