这是什么意思? #if !(arch(x86_64) || arch(arm64))
What does this mean? #if !(arch(x86_64) || arch(arm64))
我在使用的教程中遇到了这个不寻常的代码。
#if !(arch(x86_64) || arch(arm64))
func sqrt(a: CGFloat) -> CGFloat {
return CGFloat(sqrtf(Float(a)))
}
#endif
它看起来与我目前学习的代码完全不同。我知道这是一个平方根函数,但标签呢?关于我的计算机架构?
请简单解释一下。
#if condition
// Code in here
#endif
这是一个条件编译指令 - 它用于对编译器隐藏代码块。块中的代码仅在条件为真时才编译。
许多语言都支持它,尤其是 C 和 C++。它通常用于解释处理器架构和操作系统的差异 - 允许一个代码库在许多不同的平台上编译。
它也可以用于删除发布版本中的 debugging/tracing 代码。
条件在编译时评估一次,通常是在主编译器之前对源代码的初始传递。
您可以为各种目的设置那些类型的条件编译指令。
例如,您可能有一个用于 DEBUG 的环境和一个用于 RELEASE 的环境,具体取决于您不想编译的环境,您可能不会使用相同的函数/值。
在你的情况下,#if !(arch(x86_64) || arch(arm64))
是确定你的设备(或模拟器)的架构。
事实上,一些 iDevice 运行 32 位和其他 64 位(5S 和更新)。浮点数的表示方式不同。
正如@Martin 所写,您可能不必再使用此代码:)
我在使用的教程中遇到了这个不寻常的代码。
#if !(arch(x86_64) || arch(arm64))
func sqrt(a: CGFloat) -> CGFloat {
return CGFloat(sqrtf(Float(a)))
}
#endif
它看起来与我目前学习的代码完全不同。我知道这是一个平方根函数,但标签呢?关于我的计算机架构?
请简单解释一下。
#if condition
// Code in here
#endif
这是一个条件编译指令 - 它用于对编译器隐藏代码块。块中的代码仅在条件为真时才编译。
许多语言都支持它,尤其是 C 和 C++。它通常用于解释处理器架构和操作系统的差异 - 允许一个代码库在许多不同的平台上编译。
它也可以用于删除发布版本中的 debugging/tracing 代码。
条件在编译时评估一次,通常是在主编译器之前对源代码的初始传递。
您可以为各种目的设置那些类型的条件编译指令。
例如,您可能有一个用于 DEBUG 的环境和一个用于 RELEASE 的环境,具体取决于您不想编译的环境,您可能不会使用相同的函数/值。
在你的情况下,#if !(arch(x86_64) || arch(arm64))
是确定你的设备(或模拟器)的架构。
事实上,一些 iDevice 运行 32 位和其他 64 位(5S 和更新)。浮点数的表示方式不同。
正如@Martin 所写,您可能不必再使用此代码:)