我可以在调试时准确控制函数返回的内容(即rand())吗?

假设我有以下几行代码:

int a = rand();
int b = rand();
int c = rand(); 

在调试时,有什么方法可以使 'rand()' 分别返回 1、2、3 到变量 a、b 和 c?

如果不是(我认为可能是这种情况),是否有一种简单的 Ctrl-F 替换方法,我可以在调试时对这些值进行硬编码?

回答

一种选择是使用预处理器宏来“覆盖”该rand函数,并使用-DDEBUG.

#ifdef DEBUG
#define rand() debug_rand()
static int debug_rand() {
    static int n = 1;

    return n++;
}
#endif

根据项目的复杂性,您可能希望通过附加条件#ifdef#undef条件来控制其范围。


或者,您可以有条件地调整您的srand通话。

#ifdef DEBUG
    srand(1);
#else
    srand(/* your usual seed gen */); 
#endif

这会导致您的程序行为可预测。

您可以编写一个单独的程序来绘制系统上N 次 rand()调用返回的默认值集,并将其用作参考表。


以上是我可以在调试时准确控制函数返回的内容(即rand())吗?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>