C 是否有允许动态函数调用的解决方法?

标签 c function dynamic

我有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/

相关文章:

c - 对重复数字进行排序

c - 通过 usart 发送大数组

Javascript 不产生输入类型的结果

php - 事件 div 的可能代码

ios - 在框架中嵌入框架 (iOS 8+)

c - 在 ubuntu 上使用 C 进行段错误核心转储

c++ - 理解以下来自CSAPP的汇编代码

php - 在angularjs Controller 中的函数内调用函数

bash - libipopt.so.1 : Cannot open shared object file

javascript - 使用 jQuery 匹配动态添加的事件(作为属性)