【发布时间】:2012-04-17 19:02:55
【问题描述】:
所以我正在编写一个库,我想定义一个具有 pi 值的常量。我正在考虑定义一个 static const float pi = 3.14;在 pi.h 文件中。
但是,我几乎可以肯定这不是这样做的方法,因为我读过您不应该在头文件中定义变量。
我认为的另一种方法是声明一个返回 pi 值的内联函数,但使用起来很尴尬。
另一种方法(我认为)是把它放在 pi.cc 编译到库中,然后使用 extern static const float pi;在您使用 pi 的任何文件中,当然也可以将这些文件与库链接。
这样做的最佳方法是什么?标准库可能会定义一个宏,但我认为常量更好。
【问题讨论】:
-
您在哪里看到 M_PI?我看了参考cplusplus.com/reference/clibrary/cmath 没看到。
-
没关系,它在我的实现中,但不是标准的一部分。
-
正如 Kshitij Mehta 所指出的,您应该使用
M_PI- 它可能不是 ANSI/ISO 标准,但它是 POSIX 标准,并且通常也被其他编译器支持(尽管您可能必须配置一个“功能宏”来定义它——例如,MSVC 上的_USE_MATH_DEFINES,正如 Kshitij 的链接所示)。 -
@R. - 好的,我会买那个。但是像stackoverflow.com/questions/1352784/… 和stackoverflow.com/questions/2777541/static-const-double-in-c 这样的东西让我有点害怕。但也许他们只是丢弃了最初并不认真的示例代码。再说一次,总是有straightdope.com/columns/read/805/… 我什至设法在这个答案的原始编辑中搞砸了:stackoverflow.com/a/9040612/12711