valuechange事件在c或c ++中具有类似的功能

时间:2012-10-25 18:25:35

标签: c++ c

我正在实现一个全局调试模块,一个模块包含一个结构来保存C中的所有全局变量,我们的代码同时包含C和C ++模块。如果在某处设置现有变量,有没有办法,也会导致更新结构中的调试全局变量。 我在考虑setter函数,但是这需要在每个模块中进行修改。而且还有一种方法可以像使用C或C ++在JSF中复制valuechangeevent这样的功能。

2 个答案:

答案 0 :(得分:0)

你可以用一些预处理器技巧来做到这一点:

#ifdef DEBUG
#define myvar global_debug_thingy->myvar
#else
int myvar;
#endif

我不认为你可以这样做访问器函数或通知器,因为它需要不同的代码进行读写,而预处理器不能这样做。

答案 1 :(得分:0)

您可以使调试模块包含您正在监视的变量的所有指针。

struct debug {
  int * pointer_to_var_1;
};

struct debug __debug__;
__debug__.pointer_to_var_1 = &var_1;

现在假设var_1已在某处更改,您可以通过以下方式直接从__debug__查看:

*(__debug__.pointer_to_var_1)  //This is up to date

否则,您将不得不使用setter并更改模块中的所有内容,或使用无限循环或计时器来监视所有变量。 C中没有值更改的事件注册。