我要检查200个表中的一个字节。 我不想写200行来检查它。 你有任何关于for循环的提示吗?
我的代码示例:
#include <stdio.h>
#include "CUnit/Basic.h"
#include "CUnit/Console.h"
#include "CUnit/Automated.h"
#include "CUnit/CUCurses.h"
#include "CUnit/TestDB.h"
void _testu(){
CU_ASSERT_EQUAL(55, my_tab_0[5]);
CU_ASSERT_EQUAL(55, my_tab_1[5]);
CU_ASSERT_EQUAL(55, my_tab_2[5]);
CU_ASSERT_EQUAL(55, my_tab_3[5]);
.
.
.
CU_ASSERT_EQUAL(55, my_tab_n[5]);
}
答案 0 :(得分:3)
如果你有n个独立数组,你可以尝试构建一个指针数组:
char *my_tab[] = { my_tab_0, my_tab_1, m__tab_2, ... my_tab_n };
你可以这样做:
void _testu(){
int i;
for(i=0; i<=n; i++) {
CU_ASSERT_EQUAL(55, my_tab[i][5]);
}
}
如果你有多个循环使用它,它主要是有意义的。
答案 1 :(得分:1)
由于无法更改数据结构,请考虑使用高级文本编辑器工具为您编写这些行。它不是处理它的最正统的方式,但它起作用,它至少是快速和清晰的。在emacs中,我会考虑两个选项:
1:编写一个为您生成格式化字符串的循环:
(defun copy_iter (strng times)
(let ((result))
(dotimes (i times result)
(setq result (concat result "\n" (format strng i))))))
调用(copy_iter "CU_ASSERT_EQUAL(55, my_tab_%s[5]);" 200)
将返回您的期望
2:复制一般字符串200次,然后使用正则表达式替换标记:
1)使用通用标记复制字符串200次(here是如何):
"
CU_ASSERT_EQUAL(55, my_tab_<CHANGE_THIS>[5]);
CU_ASSERT_EQUAL(55, my_tab_<CHANGE_THIS>[5]);
CU_ASSERT_EQUAL(55, my_tab_<CHANGE_THIS>[5]);
CU_ASSERT_EQUAL(55, my_tab_<CHANGE_THIS>[5]);
CU_ASSERT_EQUAL(55, my_tab_<CHANGE_THIS>[5]);
...
2)调用replace-regexp,输入:<CHANGE_THIS>
,输出:\#
也会留下预期的字符串,如here所述。
当然,emacs只是一个建议。我的答案的要点是表明文本编辑器本身有时(或者说很多次)可以帮助我们克服这些问题。我希望它有所帮助!
干杯