我正在尝试定义一个沿我项目的所有源文件增加的宏。与__COUNTER__
对所有文件分开的宏不同。我尝试在类中使用静态成员变量,例如:
class A{
static int GetNextNum() {
number++;
return number - 1;
}
private:
static int number;
};
#define NEXT_NUM A::GetNextNum()
但结果不是我想要的。例如,我希望在此循环中的每次迭代都具有相同的数字(就像 会发生的那样__COUNTER__
):
for (int i = 0; i < 10; ++i) {
doSomething(NEXT_NUM)
}
虽然我已经实施了它,但它在每次迭代中都会增加。关于如何实现我需要的任何想法?(我正在使用 Visual Studio,但更喜欢独立于编译器的解决方案)。
编辑:按照这里的要求,这是一个类似于我想做的事情的简约示例。我尝试定义一个类来计算我通过代码的给定部分的次数。以下是我将如何使用这样的类:
for (int i = 0; i < 10; ++i) {
ExecuteCounter(location_id);
... do stuff ...
}
还有很多我在析构函数中记录和积累的东西,但我相信这足以让你明白这一点。起初,我使用了一个地图,其中 entry 是我存储我关心的信息的对象,字符串是通过附加__FILE__
with形成的__LINE__
(因此唯一地标识了位置),但事实证明这很慢。因此,我决定在其中使用表格和索引,而不是使用地图。这将从整体复杂性中去除对数并显着提高性能。希望这个解释能让我的问题更清楚。