В 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, который занимает одну строку и будет также отслеживать выходобласти?