【发布时间】:2017-11-06 00:57:44
【问题描述】:
我知道我可以使用枚举在 C 中为整数声明一个命名编译时常量,但是有没有办法在 C 中为浮点数声明命名编译时常量,而不使用宏(我知道 C++有constexpr,但我现在严格使用C)?也非常感谢包含特定于编译器的 C 语言扩展的答案。
【问题讨论】:
-
什么上下文要求你有一个编译时常量浮点数?
-
你不认为你的编译器会知道如何做正确的事吗?有哪些严重损坏的例子?
-
没有与
enum等效的浮点数 -
您需要在 C 中使用宏。
-
(a) 你所要求的——声明常量——不是你想要的——快速代码或小代码。编译器自己决定是否使用立即数、从只读数据页加载常量、动态计算常量、将常量折叠成更大的表达式或其他选项。 (b) 您可以使用
static const float foo = value;声明常量。 (c) 你想要的可能没有帮助;加载常量所花费的时间几乎肯定不会显着减慢您的代码。
标签: c floating-point compile-time-constant