【发布时间】:2013-08-18 16:16:51
【问题描述】:
我想知道在 C++ 中定义复杂常量“i”的“最佳实践”是什么。
我知道“#define vs const in C++”这个问题已经被问过很多次了,一般的答案是最好使用const.
但是,我认为使用 #define 而不是 const 来定义数学常数(例如“i”或“pi”)是有意义的,因为我们不认为它们是 variables,但“绝对常量”(在接受的答案 here 中,可以阅读:“用 const 限定符定义的常量最好被视为 不可修改 变量。”)。另外,我看到在math.h 库中,常量是这样定义的,例如#define M_E 2.71828182845904523536028747135266250 /* e */.
所以我想知道,C++ 程序员通常如何定义复数常量 i?
最后,我的当前代码 #define I std::complex<double>(0.0, 1.0) 有一个小问题:预编译会导致与我使用的 Qt 库发生名称冲突(只要我启用 C++11 支持)。
【问题讨论】:
-
在 C++11 中,您可以在正确的上下文中使用
{0, 1}... -
真的,为什么?你有解释这个的链接吗?
-
最后一个问题正是为什么最好避免使用宏:它们不尊重语言级别的概念,例如范围。他们只是对在任何情况下使用该名称而呕吐。
-
@Seub:这只是新的大括号初始化语法...
-
我明白了,谢谢!不过,我想我仍然想定义 i。
标签: c++ math constants c-preprocessor