xcode - #将函数导入多个源文件

标签 xcode ios header import

我有一个头文件 (.h),我在其中定义了一堆数学函数,例如这个计算大气折射的函数...

float calcAtmosRefraction(float h0) {
    float ref = 0.0;
    if (h0 > 85) {
        ref = 0.0;
    } 
    else if (h0 > 5) {
        ref = (58.1 / tan(degToRad(h0)) - 0.07 / pow(tan(degToRad(h0)), 3) + 0.000086 / pow(tan(degToRad(h0)), 5)) / 3600;
    }
    else if (h0 > -0.575) {
        ref = (1735 + h0 * (-518.2 + h0 * (103.4 + h0 * (-12.79 + h0 * 0.711)))) / 3600;
    }
    else {
        ref = -20.772 / tan(degToRad(h0)) / 3600;
    }
    return ref; // in degrees
}

... 在我的主要UIViewController 实现文件中,我使用#import 添加 header 。它工作正常,我可以使用这些功能。当我想在不同的 UIViewController 中使用这些函数时会出现问题。 如果我不 #import header ,我会得到一个 隐式声明 函数名称的警告,如果我对 header 执行 #import,我会收到一个 duplicate symbol 错误。

最佳答案

实现此目的的一种方法是结合使用 .h.m 文件:

您的 .h 应该如下所示:

extern float calcAtmosRefraction(float h0);

而您的 .m 应该具有上述内容。 #import .h 文件,您就可以开始了。

另一种方法是将函数设置为static,这样它就不会被重新声明。这种方法允许您只使用一个 .h 文件。

关于xcode - #将函数导入多个源文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4776075/

相关文章:

React Native 中的 iOS websocket 内存问题

objective-c - "unrecognized selector"尝试监听 UIApplicationDidReceiveMemoryWarningNotification 时

Php 404 未找到 header

c++ - 为什么在这种情况下 g++ 不遵守一项定义规则 (ODR)? 。

http - 关于 HSTS HTTP header 语法

ios - 无法识别的选择器发送到类运行时错误

xcode - 在 Xcode 3.1.4 中添加 -Wall 和 -Wextra 的位置

ios - 核心数据 : How to update value of type NSSet

ios - 没有可用于登录 Xcode 5 的身份

objective-c - 如何在 iOS 中实现防止重复投票的基本投票机制?