我就宏及其可读性进行了辩论。我认为在某些情况下使用宏可以使代码更短、更易于理解并且阅读起来不那么累。
例如:
#include <iostream>
#define EXIT_ON_FAILURE(s) if(s != 0) {std::cout << "Exited on line " << __LINE__ << std::endl; exit(1);}
inline void exitOnFailure(int s, int lineNum) {
if (s != 0) {
std::cout << "Exited on line " << lineNum << std::endl;
exit(1);
}
}
int foo() {
return 1;
}
int bar(int a, int b, int c) {
return 0;
}
int main() {
// first option
if (foo() != 0) {
std::cout << "Exited on line " << __LINE__ << std::endl;
exit(1);
}
if (bar(1, 2, 3) != 0) {
std::cout << "Exited on line " << __LINE__ << std::endl;
exit(1);
}
// second option
EXIT_ON_FAILURE(foo());
EXIT_ON_FAILURE(bar(1, 2, 3));
// third option
exitOnFailure(foo(), __LINE__);
exitOnFailure(bar(1, 2, 3), __LINE__);
return 0;
}
我更喜欢这里的第二个选项,因为它简短而紧凑,而且大写锁定文本比驼峰式大小写更清晰、更易于阅读。
这种方法有什么问题吗,特别是在 C++ 中,还是只是不好(但可以接受)的风格?