0

在我的项目中,我有一个只有 C 函数的 doSomething.m 和 soSomething.h 文件:

void doSomething() {

}

一个问题:我应该怎么做才能让这个函数在我的代码中的任何地方都可以访问,而不需要导入任何头文件?

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

我有以下知识,但我无法全面了解所需内容:

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

第一个问题之上的第二个棘手问题:当我对第一个问题有答案时,我怎样才能防止“函数'doSomething'的隐式声明在C99中无效”完全针对函数doSomething而不是针对所有其他问题?

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

  1. .pch 文件,全局标头
  2. 我要使用doSomething方法的文件不应包含任何附加声明,例如extern void doSomething()
4

2 回答 2

3

好吧,您不能真正做到,因此您不必导入标头,但是您可以做的是将包含添加到您的预编译标头中

查看项目中的“支持文件”文件夹。

你会看到一个像thise这样的文件

<ProjectName>-prefix.pch

在此文件的底部添加您的导入。然后每个文件都会在此处添加所有导入。

笔记

我使用 Xcode

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

于 2012-12-27T22:29:50.863 回答
0

在要使用它的文件中,将其导入:

extern void doSomething (void);
于 2012-12-27T22:29:23.177 回答