Xcode #将函数导入多个源文件

Xcode #将函数导入多个源文件,xcode,ios,header,import,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) +

我有一个头文件(
.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
添加标题。它工作正常,我可以使用这些功能。当我想在不同的
UIViewController中使用这些函数时,就会出现问题。
如果我不导入
#import
头,我会得到函数名的
隐式声明
警告,如果我导入
#import
头,我得到一个重复符号。

一种方法是将
.h
.m
文件组合使用:

您的
.h
应如下所示:

extern float calcAtmosRefraction(float h0);
而你的
.m
应该拥有你上面所拥有的
#导入
.h
文件,您就可以开始了


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

一种方法是将
.h
.m
文件组合使用:

您的
.h
应如下所示:

extern float calcAtmosRefraction(float h0);
而你的
.m
应该拥有你上面所拥有的
#导入
.h
文件,您就可以开始了


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

如果您的函数是在头中定义的(并且它没有位于其他位置的定义),则将其声明为
静态
内联


<> p>您会得到重复的符号错误,因为C和C++(以及扩展名、Obj-C和Obj-C++)不允许对单个函数进行多个定义。
static
inline
将消除多定义错误。

如果您的函数是在标题中定义的(并且没有位于其他位置的定义),则声明它
static
inline


<> p>您会得到重复的符号错误,因为C和C++(以及扩展名、Obj-C和Obj-C++)不允许对单个函数进行多个定义。
static
inline
将消除多重定义错误。

大气折射?我对这个应用程序现在的功能感兴趣吗…大气折射?男孩,我现在对这个应用程序的功能很感兴趣……这很有道理,它就像我的另一个
.h/.m
文件对一样,
.h
声明内容,而
.m
实现它。谢谢这是有道理的,它就像我的另一个
.h/.m
文件对一样,
.h
声明内容,
.m
实现它。谢谢