gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 09:35:14 25 4
gpt4 key购买 nike

假设我有以下几行代码:

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

在调试时,有什么方法可以让“rand()”分别返回变量 a、b 和 c,例如 1、2、3?

如果不是(我认为很可能是这种情况),是否有一种简单的 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())?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66017576/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com