我有一个执行一堆测试的函数。每当创建一个新测试时,该函数就会多得到一两行。并且 - 结果被推回数组中。所以它是这样的(简化):
void foo(int *results) {
auto index { 0 };
results[i++] = test_1(some, args, here);
results[i++] = test_1(some, other_args, here);
results[i++] = test_2(some, args, here);
results[i++] = test_3(some, args, here);
// etc. etc.
}
void bar() {
auto results = new int/* magic */];
foo(results);
}
我想使用此函数中的语句数来为结果分配空间(中的行bar()
)。我不能使用动态重新分配的结构,如 anstd::vector
或 list 等 - 因为由于硬件限制,我无法分配任何内存。
现在,我可以手动计算行数 - 这会起作用。但是每当我添加另一个测试时,我都必须记住更新神奇的常数。
有没有办法用可用于“魔术”表达式的结果进行计数?
注意:由于我是一个没有尊严的严谨的人,我愿意屈从于使用宏。