比如说内联函数。
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