从外部调用静态C函数
Calling static C functions externally
这似乎是一个奇怪的问题,但我想知道是否可以通过任何类型的破解从另一个文件调用静态函数,而不显式使用extern或类似的东西。也许是通过直接调用函数的内存地址之类的方法。
基本上,我想做的是创建一个测试框架,它可以通过指定函数、文件和函数参数来调用任何函数。
这样的结构:
component/
component.c
static int foo(int a){return a/2;}
int bar(){ return 4;}
unit_tests/
main.c
int val = component.c::foo(4) * bar();
如果我能在运行时通过注入函数或其他东西的内存地址来实现这一点,那就更好了。不过,我不完全确定这是否可以在linux上执行,或者我是否遇到了安全问题。
也许与此类似,并且在我的组件过程中有一块代码来解释运行时调用并转换为正确的函数地址:通过c/c++中的内存地址调用函数
您可以使用指向静态函数的函数指针。
对于测试框架,请注意,C中的一些现有测试框架使用了强制使用STATIC
而不是static
说明符的技巧,并且如果您处于测试模式或未指定正确的链接,则STATIC
是(由框架)定义为none或static
的宏。
相关文章:
- enable_if转换构造函数(静态强制转换,is_base_of)
- 声明和定义函数静态会产生"undefined reference to function_name()"
- 有没有一种方法可以使全局函数/静态成员函数一次可呼出
- C++ - 模板类 -> 静态函数 -> 静态函数指针的链接错误
- 获取 llvm::函数静态地址
- 成员函数静态变量与成员变量
- 如何将sqlite3+扩展函数静态链接到C/C++应用程序中
- Visual Studio 2015 Natvis如何显示函数静态变量
- 返回一个指向函数静态数据的指针合适吗
- 如何将函数静态应用于非类型模板包的各个元素并对结果求和
- 是否可以通过编程方式创建函数静态对象
- 函数静态变量析构函数和线程
- 函数静态成员变量
- 隐藏模板化的辅助函数——静态成员或未命名的命名空间
- 这个解决方案对MSVC的双重检查锁定错误和函数静态有什么问题?
- 类成员函数静态和私有
- c++函数静态局部,性能好
- 函数静态变量初始化
- 使用基类中的函数静态地调用纯虚函数的派生类实现
- 使成员函数静态会使程序无法编译。想不通为什么