最近我遇到了这段代码:
#define LOG(type, str) printf(str)
#define LOG1(type, str,arg1) printf(str,arg1)
#define LOG2(type, str,arg1,arg2) printf(str,arg1,arg2)
#define LOG3(type, str,arg1,arg2,arg3) printf(str,arg1,arg2,arg3)
#define LOG4(type, str,arg1,arg2,arg3,arg4) printf(str,arg1,arg2,arg3,arg4)
代码是最近写的。所以我猜它可以用C99编译。
我的问题是:为什么不使用具有可变参数长度的简单宏?我们只会将自己限制在LOG
宏观上,仅此而已。更不用说我们不必添加LOG5
,LOG6
等。如果我们得到一个堆栈跟踪、内存不足、任何可以使这个解决方案有用的东西,会不会发生可怕的事情?
我是一个极简主义者,如果我们能得到更少的线条就更好了。但是我在这里错过了什么吗?这是故意的还是一种不好的编码习惯?