objc中"pi"和"M_PI"之间的区别是什么

JFS*_*JFS 12 math pi objective-c

在我的代码中包含了一些数学,我偶然发现了常量"PI".至少在我的Xcode版本4.6中我可以使用其中任何一个.但是pi和之间有什么区别M_PI?关于该主题的文档有点紧张.

Mar*_*n R 27

pi 在"CarbonCore.framework"标题中定义为

extern const double_t pi  __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA);
Run Code Online (Sandbox Code Playgroud)

但标记为"已弃用".我认为它是旧碳框架的遗留物.

M_PI 被定义为一个宏

#define M_PI   3.14159265358979323846264338327950288
Run Code Online (Sandbox Code Playgroud)

in math.h 和POSIX标准的一部分.

值是相同的,但M_PI出于可移植性的原因,您应该使用它们.

(对于Swift,请参阅如何在Swift中获得数学PI常量.)

  • 如果你已经导入了 Foundation 或 CoreFoundation 头文件,那么你可以直接使用它,因为它们包括 `<math.h>`。否则,您必须将 `#include <math.h>` 添加到您的代码中。 (2认同)