定义常量时包括算术运算

jah*_*aho 9 c++ constants c-preprocessor

所以我经常看到这样的事情:

#define gf_PI  f32(3.14159265358979323846264338327950288419716939937510)
#define gf_PIhalf  f32(3.14159265358979323846264338327950288419716939937510 * 0.5)
Run Code Online (Sandbox Code Playgroud)

这意味着每次在我的代码中使用gf_PIhalf时计算一半PI值,对吧?
相反,字面上写下一半PI的值不是更好吗?

做以下事情不是更好吗?

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

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

const float gf_PI = 3.14159265358979323846264338327950288419716939937510;
const float gf_PIHalf = gf_PI * 0.5f;
Run Code Online (Sandbox Code Playgroud)

Dre*_*ann 11

这意味着每次在我的代码中使用gf_PIhalf时计算一半PI值,对吧?

不,不太可能.

您可以合理地依靠编译器在编译时进行乘法,而不是运行时.