所以,我有一个算法,由参数 A、B、C 和 D 以及操作 X、Y 和 Z 组成。目标是编写代码来测试 A、B、C 和D,并可能更改操作 X、Y 或 Z。
如果只是将变量放在某个范围内,这将很简单。但既然我也想换运营商,那就没那么简单了。
我的想法是编写涵盖所有组合的代码。例如,假设只有两个参数(A 和 B),并且两者的范围相同:[1,2],整数。该代码将构建(如果可能,执行)4 个不同的可执行文件,对应于使用以下算法:
A = 1, B = 1
A = 1, B = 2
A = 2, B = 1
A = 2, B = 2
现在添加运算符。例如,我们选择前面的示例并添加操作 X,它可以是 [+,-]。结果集是:
A = 1, B = 1, X = +
A = 1, B = 2, X = -
A = 2, B = 1, X = +
A = 2, B = 2, X = -
A = 1, B = 1, X = -
A = 1, B = 2, X = +
A = 2, B = 1, X = -
A = 2, B = 2, X = +
(我希望我写了所有的组合)
无论如何,我相信可以使用 makefile 构建这样的结构,它将值赋予用 C 编写的代码的常量。我不确定是否可以以这种方式更改运算符。为了简单起见,我正在考虑使用makefile。总是可以编写生成代码的代码,但对于这种情况来说似乎很夸张。
也许它会创建一个树结构?我不确定拥有(并选择第一个示例)是否有益:
|--Makefile
|--A1
| |--B1
| | |--a.out
| |--B2
| |--a.out
|--A2
|--B1
| |--a.out
|--B2
|--a.out
使用 make 我相信我可以在代码中添加额外的变量/运算符并轻松地重建所有测试。此外,这种结构是否允许使用 make 的作业功能来运行多个线程?
谢谢