如何动态地自动注册c函数,这样它就可以在整个项目中使用,而不需要任何import /headers/externs/.p



在我的项目中,我有一个doSomething。只有C函数的文件:

void doSomething() {
}

第一个问题:我应该怎么做才能使这个函数从我的代码中的任何地方访问而不需要导入任何头文件?

注意:我想要解决这个问题根本不需要doSomething.h文件,但是它的存在/不存在并不是一个限制。

我有以下几条知识,但我不知道需要什么:

  • 我可以使用另一个函数属性((构造函数)),它将在编译时运行,它可以做一些操作来注册doSomething;
  • _class_addMethod_在"运行时"添加方法。但是我不知道如何解决"全局命名空间的类";
  • NSObject的+ load方法,但这里不相关。

在第一个问题之上的第二个棘手的问题:当我将有第一个问题的答案时,我如何才能防止"函数'doSomething'的隐式声明在C99中无效",正是为函数doSomething而不是为所有其他的?

更新:我忘了从考虑中排除以下选项:

  1. 。pch文件,全局头文件
  2. 我想使用doSomething方法的文件不应该包含任何额外的声明,如extern void doSomething()

你不能这么做所以你不需要导入头文件,你可以做的是将include添加到预编译头文件

查看项目中的"support Files"文件夹

您将看到如下文件

<ProjectName>-prefix.pch

在该文件的底部添加您的导入。然后每个文件都将在这里添加所有导入。

注意

我用Xcode

我猜如果你使用另一个IDE,如GnuStep,你可能会有另一个类似的地方。我不知道其他IDE是如何工作的

在您想要使用它的文件中导入它:

extern void doSomething (void);

相关内容

最新更新