以下是我想做的一个例子:
void attribute((constructor)) someFunction() {
// Would be nice to define C function "someFunction2" somehow here.
}
我知道class_addMethod
允许在运行时向Objective-C类添加C函数。
是否可以将C函数添加到C main
空间?
如果我正在考虑这种做事方式,请不要告诉我我错了 - 我对它感兴趣而不是出于教育目的。
答案 0 :(得分:4)
没有。 C函数由名称和正文组成。编译器将正文转换为二进制可执行代码段,当从可执行文件创建进程时,该代码将映射到某个地址。该名称由静态和动态链接器用作此地址的别名。
在运行时,这两个概念并没有太大的兴趣。加载了可执行文件并解析了名称,因此动态创建它们几乎没有用。
在iOS上,甚至不可能创建新的函数实现,因为内核不允许使内存可执行。