一个标头用于各种变量
One header for various variables
我有一个大型程序,用于对物理系统建模。因此,我需要定义不同的常量和宏。出于这个原因,我选择了一个头文件,在其中我定义了所有这些东西。如果需要的话,我会将这个头文件包含在项目中的所有.cpp文件中。下面是这样一个头文件(constants.h)的例子:
#ifndef CONSTANTS_H
#define CONSTANTS_H
//global library
#include <fstream>
//constant
const double PI = 3.1415926535;
//macro
#define exp_2(x) ((x)*(x))
#endif
我在这里包含的库fstream,因为我的许多.cpp文件都需要它。我不是专业的程序员,但我想听听基于这一原理进行大型模拟的普遍看法。你有什么建议吗?
小心宏。它们看起来像函数,但语义不同,因为在您的示例中对(x)进行了双重求值,这可能会导致性能后果或逻辑崩溃。例如,使用宏max/min/abs:
Ex。1:
// would spill extra innocent blood
val = max(100, GetBloodSample(BS_LDL))
示例2:
// can unexpectedly return a number which is less than 3.
val = max(3, schroedingerCat.GetNumPaws())
(定义为#define max(a,b) ((a)>(b)?(a):(b))
时)
请改用内联函数。此外,您应该使用Tau而不是PI))
至少您应该将常量变量定义为静态,以避免(可能的)多个包含的错误和编译器警告:
static const double PI = 3.1415926535;
另一种方法是在单个.cpp文件中定义PI,然后在头中定义extern。
相关文章:
- 没有用于初始化C++中的变量模板的匹配构造函数
- 将十六进制值设置为用于填充的字符变量时出现问题
- 与不同变量类型相比,用于变量的 Clang AST 匹配器
- 在一个子程序中输入的变量用于C++中的另一个子程序
- 如何将一个变量用于父类和派生类
- 将其他函数中的变量用于主函数C++
- 是否有用于"go to variable type definition" C++中"auto"变量的 Visual Studio 键盘快捷方式?
- 在运行时将更改的环境变量应用于 QApplication
- 输出(用于 GraphViz)提升图顶点及其属性,使用具有私有变量的类作为捆绑属性
- 用于浮点值的最佳变量类型
- 用于在运行时选择变量的 C++ 预处理器指令
- STD ::原子与静态变量用于线程同步
- 为什么保守调整大小不适用于函数中的 Ref 变量?
- 更改用于定义顶点的变量
- 回调函数,用于在同一对象中设置私有变量
- 为什么 std::get 不适用于变量?
- C 编译器可以执行用于返回值的命名const变量的RVO
- TBB Parallel_用于计数,增量变量不准确
- 元组 std::get() 不适用于变量定义的常量
- 模板约束是否可用于变量模板