【发布时间】:2013-03-31 21:50:58
【问题描述】:
我目前正在完成一个库,并希望我的“调试”日志功能在编译时是可选的。
我的想法是:检查 DEBUG 是否已定义,然后定义我的自定义 debug 函数。
这是我所做的(部分)
#if defined(DEBUG)
#define debug(s) Serial.println(s)
#define debug(s,t) Serial.print(s);Serial.println(t)
#else
#define debug(s) // s
#define debug(s,t) // s t
#endif
(我正在为 Arduino 编译;这就是为什么我需要将函数一分为二。)
由于我使用了很多时间,Serial.print 由 Serial.println 继任,我希望 debug(s) 也接受两个“参数”。
因此,插入debug("ParamOne"); 和debug("ParamOne", "ParamTwo"); 将导致定义的函数。
但是,显然,只有最后定义的调试是有效的,覆盖第一个。
我应该怎么做,保持函数的名称相同,或者有什么更“正确”的方法吗?
【问题讨论】:
-
你
#define在很多方面都被破坏了。考虑:if (foo) debug(s,t);。或if (bar) foo(); else debug(s,t);.
标签: c++ debugging compiler-construction arduino c-preprocessor