Pie*_*ro2 2 c++ debugging release release-mode c-preprocessor
我需要在调试模式下将某些代码行"激活",并在发布模式下忽略.有没有办法做这样的事情:
#include <iostream>
using namespace std;
#ifdef _TEST_
#define _cerr cerr
#else
#define _cerr // cerr
#endif
int main() {
_cerr << "TEST message" << endl;
}
Run Code Online (Sandbox Code Playgroud)
因此,当_TEST_
未定义时,会对某些行进行注释或从代码中删除.我知道评论是在其余的之前处理的,所以这段代码是错误的.但是,如何在不明确使用#ifdefs的情况下获得我需要的行为?
您可以使用宏:
#ifdef _TEST_
#define DEBUG_ONLY(x) x;
#else
#define DEBUG_ONLY(x)
#endif
int main() {
DEBUG_ONLY(cerr << "TEST message" << endl)
}
Run Code Online (Sandbox Code Playgroud)
如果您所使用的是在发布版本中删除的调试日志记录,您可以执行以下操作:
#ifdef _TEST_
#define LOG(x) (cerr << x << endl)
#else
#define LOG(x)
#endif
...
int main() {
LOG("TEST message");
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
443 次 |
最近记录: |