请问楼主怎么学习到这些知识的,我想学习“学习的方法”
编译器比你聪明
zwhfly
#118
宏的一个很大的问题是参数多次出现造成多次展开,as stated by @omegacoleman。 这种写法就是错误的(或者说危险的):
“正确”的写法是这样的:
#define MAX(a,b) ({auto aa=(a);auto bb=(b);aa>bb?aa:bb;})
注1:此行代码为手写,未测试;
注2:这里用了个 gnu 扩展,thus 不可移植;
注3:应该用 auto &&
? Whatever…
所以说用 std::max
多好!
zwhfly
#120
看你的主题,你用宏是因为你在讨论宏是否能“提高性能”,而不是因为“没有 C++ 用”。 你指出了宏不能提高性能,同时带来许多坏处。我只是补充宏的一点坏处(难以正确实现),并没有让你这么用。