C++里#define的用处到底还有哪些,感觉很多可以替代
  • 板块灌水区
  • 楼主TH911
  • 当前回复11
  • 已保存回复11
  • 发布时间2024/9/30 20:53
  • 上次更新2024/9/30 23:40:14
查看原帖
C++里#define的用处到底还有哪些,感觉很多可以替代
967959
TH911楼主2024/9/30 20:53

比如说内联函数

char buf[1 << 20], *p1, *p2;
#define gc()                                                               \
  (p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 1 << 20, stdin), p1 == p2) \
       ? EOF                                                               \
       : *p1++)

可以被平替为:

inline char gc(){
	if(p1==0){
		p1=buf;
		p2=p1+fread(buf,1,1<<20,stdin);
		return *p1++;
	}else if(p1!=p2)return *p1++;
	return EOF;
}

甚至感觉可读性会好一些。


比如说类型名

#define ll long long
ll x;

可以被平替为这两个:

using ll = long long;
ll x;
typedef long long ll;
ll x;

比如说常量

#define MAX 2147483647

可以被平替为:

const int MAX=2147483647;

而且,#define 作为单纯的文本替换,有时还可能会引发一些问题...所以到现在为止用处还大吗?貌似只剩下了:

#define int long long
2024/9/30 20:53
加载中...