首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C89标准中使用M_PI

在C89标准中使用M_PI
EN

Stack Overflow用户
提问于 2011-02-16 02:34:59
回答 4查看 34.9K关注 0票数 26

我正在使用C并尝试访问常量M_PI (3.14159...)。我已经导入了math.h头文件,但M_PI常量仍未定义。通过对StackOverflow的一些搜索,我发现我需要将#define _USE_MATH_DEFINES添加到我的代码中(参见下面的示例代码)。这在正常编译时工作得很好,但是我需要能够使用std=c89标志来编译我正在做的工作。

如何从一些C89代码访问M_PI?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-02-16 03:12:29

一个符合标准的库文件math.h不仅不是必需的,而且实际上在默认情况下不能定义M_PI。在这种情况下,“默认情况下”意味着M_PI只能通过编译器特定的技巧来定义,最常见的是通过使用保留标识符来定义未定义的行为。

只需自己定义常量(您可以自由使用名称M_PI,但如果您希望能够使用不符合规范的编译器编译代码,则必须首先检查是否尚未定义M_PI )。出于约定的原因,不要将M_PI定义为pi (的近似值)以外的任何值。

票数 41
EN

Stack Overflow用户

发布于 2011-02-16 02:37:45

我会去找

代码语言:javascript
复制
#ifndef M_PI
#    define M_PI 3.14159265358979323846
#endif
票数 28
EN

Stack Overflow用户

发布于 2011-02-16 02:37:30

M_PI不是C标准所必需的,它只是一个常见的扩展,所以如果你想成为标准,你就不应该依赖它。但是,你可以很容易地为它定义自己的#define,上次我检查它是一个通用常量,所以没有太多混淆的空间。:)

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5007925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档