c++ - 定义常量时包括算术运算

标签 c++ constants c-preprocessor

所以我经常看到这样的东西:

#define gf_PI  f32(3.14159265358979323846264338327950288419716939937510)
#define gf_PIhalf  f32(3.14159265358979323846264338327950288419716939937510 * 0.5)

这意味着我每次在代码中使用 gf_PIhalf 时都会计算一半的 PI 值,对吗?
直接写半个 PI 的值不是更好吗?

做以下事情不是更好吗:

#define gf_PI f32(3.14159265358979323846264338327950288419716939937510)
const float gf_PIHalf = gf_PI * 0.5f;    // PIHalf is calculated once

最后,这样做不是最好的(以及为什么它似乎不是一种常见的做法):

const float gf_PI = 3.14159265358979323846264338327950288419716939937510;
const float gf_PIHalf = gf_PI * 0.5f;

最佳答案

This means that half PI value is calculated every time I use gf_PIhalf in my code, right?

不,不太可能。

您可以合理地指望您的编译器在编译时而不是运行时执行该乘法。

关于c++ - 定义常量时包括算术运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15146454/

相关文章:

C++ 指针行为异常

c++ - GNU Make 会自动添加额外的先决条件吗?

perl - 如何传递定义为常量的数组的引用?

c++ - const 在 C++11 中是否意味着线程安全?

c++ - 字符串转换为 const char * 问题

c - 正值和负值的不同输出

css - SASS 有像 C 预处理器那样的问题吗?

c - GCC 需要在#define 中使用下划线吗?

c++ - 对象 "is not a structure or union"如果临时传递给构造函数

c++ - 由于内联函数,C++ 中是否出现 "code bloat"?