Objective c 如何动态地自动注册C函数,使其在整个项目中都可用,而无需任何导入/头文件/外部文件/.pch文件?
在我的项目中,我有一个doSomething.m和sososomething.h文件,只有C函数:Objective c 如何动态地自动注册C函数,使其在整个项目中都可用,而无需任何导入/头文件/外部文件/.pch文件?,objective-c,dynamic,runtime,Objective C,Dynamic,Runtime,在我的项目中,我有一个doSomething.m和sososomething.h文件,只有C函数: void doSomething() { } 第一个问题:我应该怎么做才能使这个函数在代码中的任何位置都可以访问,而不需要导入任何标题 注意:我想解决这个问题根本不需要doSomething.h文件,但它的存在/不存在并不是一个限制 我有以下几点知识,但我不能完全了解需要什么: 我可以使用另一个具有属性((构造函数))的函数,该函数将在编译运行时运行,它可以执行一些操作来注册doSometh
void doSomething() {
}
第一个问题:我应该怎么做才能使这个函数在代码中的任何位置都可以访问,而不需要导入任何标题
注意:我想解决这个问题根本不需要doSomething.h文件,但它的存在/不存在并不是一个限制
我有以下几点知识,但我不能完全了解需要什么:
- 我可以使用另一个具有属性((构造函数))的函数,该函数将在编译运行时运行,它可以执行一些操作来注册doSomething李>
- _类添加方法添加“运行时”上的方法。但我不知道如何解析“全局名称空间类”李>
- NSObject的+加载方法,但与此无关
在要使用它的文件中,导入它:
extern void doSomething (void);
在要使用它的文件中,导入它:
extern void doSomething (void);
好吧,你不能真的这样做,所以你不必导入一个头,但你可以做的是添加包括到您的预编译头 查看项目中的“支持文件”文件夹 您将看到这样的文件
<ProjectName>-prefix.pch
-prefix.pch
将您的导入添加到此文件的底部。然后每个文件都会在这里添加所有导入
注意
我使用Xcode
我想如果您使用另一个IDE,比如GnuStep,您可能会有另一个类似的地方。我不知道另一个IDE是如何工作的。你不可能真正做到这一点,因此你不必导入头文件,但是你可以做的是将include添加到预编译头文件中 查看项目中的“支持文件”文件夹 您将看到这样的文件
<ProjectName>-prefix.pch
-prefix.pch
将您的导入添加到此文件的底部。然后每个文件都会在这里添加所有导入
注意
我使用Xcode
我想如果您使用另一个IDE,比如GnuStep,您可能会有另一个类似的地方。我不知道另一个IDE是如何工作的。谢谢你的回答,我知道这个选项。请看,我是如何更新我的问题的。听起来你想要一些不可用的东西。要么代码知道该方法,要么它不知道。您需要隐式声明,但不幸的是C99不允许这样做。要么通过外部导入告诉它您有可用的函数,要么导入包含原型的标题。我不知道还有什么别的办法。>听起来你想要的是没有货的东西。我知道我在问一些棘手的问题,但这是我问题的重点。也许你可以把它从C99模式中去掉。在终端中查看
man gcc
。并查看-std=部分如果查看目标的构建设置,可以找到并更改C语言方言。我不知道这会有什么帮助。谢谢你的回答,我知道这个选择。请看,我是如何更新我的问题的。听起来你想要一些不可用的东西。要么代码知道该方法,要么它不知道。您需要隐式声明,但不幸的是C99不允许这样做。要么通过外部导入告诉它您有可用的函数,要么导入包含原型的标题。我不知道还有什么别的办法。>听起来你想要的是没有货的东西。我知道我在问一些棘手的问题,但这是我问题的重点。也许你可以把它从C99模式中去掉。在终端中查看man gcc
。并查看-std=部分如果查看目标的构建设置,可以找到并更改C语言方言。我不知道这会有什么帮助。谢谢你的回答。我想要一个不需要任何额外申报/进口的答案。谢谢你的回答。我想得到一个根本不需要任何额外申报/进口的答案。