我正在使用C并尝试访问常量M_PI (3.14159...)。我已经导入了math.h头文件,但M_PI常量仍未定义。通过对StackOverflow的一些搜索,我发现我需要将#define _USE_MATH_DEFINES添加到我的代码中(参见下面的示例代码)。这在正常编译时工作得很好,但是我需要能够使用std=c89标志来编译我正在做的工作。
如何从一些C89代码访问M_PI?
发布于 2011-02-16 03:12:29
一个符合标准的库文件math.h不仅不是必需的,而且实际上在默认情况下不能定义M_PI。在这种情况下,“默认情况下”意味着M_PI只能通过编译器特定的技巧来定义,最常见的是通过使用保留标识符来定义未定义的行为。
只需自己定义常量(您可以自由使用名称M_PI,但如果您希望能够使用不符合规范的编译器编译代码,则必须首先检查是否尚未定义M_PI )。出于约定的原因,不要将M_PI定义为pi (的近似值)以外的任何值。
发布于 2011-02-16 02:37:45
我会去找
#ifndef M_PI
# define M_PI 3.14159265358979323846
#endif发布于 2011-02-16 02:37:30
M_PI不是C标准所必需的,它只是一个常见的扩展,所以如果你想成为标准,你就不应该依赖它。但是,你可以很容易地为它定义自己的#define,上次我检查它是一个通用常量,所以没有太多混淆的空间。:)
https://stackoverflow.com/questions/5007925
复制相似问题