読者です 読者をやめる 読者になる 読者になる

Swiftで遊ぼう! on Hatena

あしたさぬきblogでやってた初心者オヤジのiOSプログラミング奮闘記がHatenaに来ました

Swiftで遊ぼう! - 821 - プリプロセッサ

プログラミングド素人の私は、プリプロセッサの意味も分からなかった。

いちおう「インタープリタ」と「コンパイラ」は分かっているつもりだったけど、「プリプロセッサって何?」だったんで、少し勉強しました。

www.atmarkit.co.jp

勉強しているチュートリアルに次のコードがあったからです。

#if !(arch(x86_64) || arch(arm64))
func sqrt(a: CGFloat) -> CGFloat {
  return CGFloat(sqrtf(Float(a)))
}
#endif

OS依存しているメソッドが存在するようです。コンパイルする前にCGFloat型を扱えない関数sqrt()でもCGFloat型として計算させるメソッドにしているみたいです。

arch()メソッドは、「x86_64」はインテル製の64ビットOS、「arm64」はARM製(アップル?)の64ビットOSならtrueを返すんでしょう。「!(A||B)」という条件文は、「AでもBでもなかったら」と解釈できて、64ビットOSじゃなければこのメソッドが導入されるということでしょう。

これだけ