我有read C 不支持动态函数调用。我的程序有越来越多的测试用例作为单独的函数实现,比如 -
int testcase1(void);
int testcase2(void);
int testcase3(void);
每次我添加一个新的测试用例时,我还必须添加对我的主函数的调用,例如 -
int main(int argc, char **argv){
assert(!testcase1());
assert(!testcase2());
assert(!testcase3());
}
我更愿意调用类似 assert(!testcase*())
的方法,其中 * 匹配在我的程序中解析为有效函数名称的任何字符串。
你能想到一个更方便的解决方案吗?
最佳答案
如果您所有的测试用例都具有相同的签名,那么您可以使用函数指针数组:
void (*func[])() = { testcase1, testcase2 };
for (size_t i = 0; i < sizeof(func)/sizeof(func[0]); i++) {
assert(!func[i]());
}
关于C 是否有允许动态函数调用的解决方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40337946/