c++ - 我可以让函数调用软编码吗?

标签 c++ c unit-testing visual-c++

我想制作一个单元测试驱动程序。
上面写着tests.txt内容如下:

I32 cdecl32 func(in I32, in szC8P32, out I32P32, out sC8P32)
in  in      out out     ret out out ret ...
16  test    5   test2   1

被调用者有这样的声明:

int __cdecl func(const int, const char*, int*, char*);

测试驱动使用LoadLibraryGetProcAddress获取函数的地址。
但是,驱动程序不会包含 func 的声明。它将用于测试其他功能类型。就像一个通用工具。
应通过解析 tests.txt 动态给出参数。

这可能吗?我该怎么办?

最佳答案

你想做的事情很棘手。您必须将函数的声明与 TXT 文件中的定义相匹配。如果它们不完全匹配,您将出现未定义的行为。

无论如何,你有两个选择:

  1. 测试驱动程序将生成一个带有函数原型(prototype)的 C 文件,并运行 C 编译器来生成所需的代码。
  2. 使用libffi ,一个专为满足您的需求而设计的库。

关于c++ - 我可以让函数调用软编码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36531236/

相关文章:

c - 在 C 中使用 read 打印 "hello world!"

c++ - 非标准代码,还是 g++ 错误?

android - 在Android Studio Project中使用Tensorflow Lite C++ API的问题

c++ - c++中双括号 "[[foo()]] type name;"语法的含义?

c - 在 Linux 中创建静态库时出现问题

c - 如何对字符串问题进行模运算?

c# - 使用异步任务<ActionResult>对 ASP.NET MVC 5 Controller 进行单元测试

android - 同时测试多个构建变体

c# - 无法在 Visual Studio 中关联测试用例

c++ - 如果不需要,避免在 Make 中链接和编译