0

可能重复:
在 c 中动态创建函数

这是我想做的一个例子:

void  attribute((constructor)) someFunction() {
    // Would be nice to define C function "someFunction2" somehow here.
}

我知道class_addMethod允许在运行时将 C 函数添加到 Objective-C 类。

是否可以将 C 函数添加到 Cmain空间?

如果我正在考虑这种做事方式,请不要告诉我我错了——我对它感兴趣,而不是出于教育目的。

4

1 回答 1

4

不,AC 函数由名称和主体组成。编译器将主体转换为可执行代码的二进制片段,当从可执行文件创建进程时,该可执行代码将映射到某个地址。静态和动态链接器将该名称用作该地址的别名。

在运行时,这两个概念都不是很有趣。加载可执行文件并解析名称,因此动态创建它们几乎没有用处。

在 iOS 上,甚至不可能创建新的函数实现,因为内核不允许使内存可执行。

于 2012-12-30T07:04:37.507 回答