【发布时间】:2016-09-24 20:29:24
【问题描述】:
我有一个名为“count”的 C 函数,如下所示:
void count(){
static int c = 0;
printf("Counter=%i", c);
c++;
}
此外,我有一个 Cpp 对象向量,每个对象都调用“计数”函数。由于计数器变量是静态的,一个对象的调用也会增加所有其他对象的计数器值。我真正想要的是每个对象的专用计数器,因为“计数”功能是待测设备并且可能不会更改。我认为这应该可以使用命名空间......有什么想法吗?
我最初的想法是使用命名空间...
namespace c1 {
#ifdef __cplusplus
extern "C" {
#endif
#include "count.h"
#ifdef __cplusplus
}
#endif
}
namespace c2 {
#ifdef __cplusplus
extern "C" {
#endif
#include "count.h"
#ifdef __cplusplus
}
#endif
}
然后像这样从 Cpp-Object 内部调用 ...
if (objNr == 1) c1::count();
else if (objNr == 2) c2::count();
...
它对我不起作用。知道为什么吗?
【问题讨论】:
-
所以你说的代码不能改变?没有意义。每次调用它都会递增。期间。
-
如果您想为每个对象设置一个专用计数器,请将该计数器添加为该类的成员。
-
此外,在函数内声明的变量没有链接,因此您无法从其声明函数之外的任何地方直接访问它们。例如,这可以防止您的测试代码在测试之间重置变量。
-
我投票结束这个问题,因为这个问题没有可能的解决方案。
-
我只是想知道,你在这里测试什么......
标签: c++ static namespaces extern-c