【发布时间】:2019-10-12 10:37:47
【问题描述】:
在 C++ 中,对象构造函数和析构函数可用于在代码执行期间跟踪范围,如下所示:
#define TRACE(msg) Helper trace_helper(msg);
class Helper {
const char* _name;
Helper(const car* name) {
_name = name;
printf(“enter %s”, name);
}
~Helper() { printf(“exit %s”, _name); }
};
这让我可以跟踪我的代码,例如
main() {
TRACE(“main”)
for(...) {
foo();
}
}
void foo() {
TRACE(“foo”)
do some stuff
if(condition) {
TRACE(“inner block”)
do some stuff
}
}
这对于分析代码很有用。
现在,在 C 中没有可用的构造函数和析构函数,我想知道是否仍然可以创建一个 TRACE 宏,它只需要一行并且还跟踪范围的退出?
【问题讨论】:
-
在实际构建代码之前创建一个预构建步骤来做一些魔术是否可以接受?如果是这样,我只需将所有
{和}替换为一些记录块的代码。 -
@MartinB。这听起来是个好主意,您将如何创建一个定位到
{ }的预构建事件?