以下比较了四种写法:
#define max0(x,y) x>y?x:y
constexpr int max1(int x, int y) {
return x > y ? x : y;
}
int max2(int x, int y) {
return x > y ? x : y;
}
inline int max3(int x, int y) {
return x > y ? x : y;
}
int main() {
int x = 1, y = 2;
int r;
clock_t time0 = clock();
for (size_t i = 0; i < 20000; i++)
{
for (size_t j = 0; j < 100000; j++)
{
r = max0(x, y);
}
}
cout << "max0:" << clock() - time0 << endl;
return 0;
}
结果:
(等死我了。。)
(刚才是我太天真。。)
(我还以为inline能上天)
结论:果然宏定义才是爸爸