#import函数为多个源文件

时间:2011-01-23 19:52:08

标签: 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's实施文件中,我使用#import添加标头。它工作正常,我可以使用这些功能。当我想在不同的UIViewController.中使用这些函数时会出现问题。如果我没有#import标题,我会对函数名称发出implicit declaration警告,如果我这样做{ {1}}标题,我收到#import错误。

2 个答案:

答案 0 :(得分:3)

您可以这样做的一种方法是使用.h.m文件的组合:

您的.h应如下所示:

extern float calcAtmosRefraction(float h0);

你的.m应该拥有上面的内容。 #import .h文件,你会很高兴。

另一种方法是创建函数static,这样就不会重新声明。此方法允许您仅使用一个.h文件。

答案 1 :(得分:1)

如果你的函数是在标题中定义的(并且它的定义不在其他地方),那么将其声明为staticinline

你得到一个重复的符号错误,因为C和C ++(以及扩展名,Obj-C和Obj-C ++)不允许单个函数的多个定义。 staticinline将消除多重定义错误。