各种变量的一个标题

时间:2013-02-05 13:07:10

标签: c++ header constants

我有一个大型程序,我用它来建模物理系统。因此,我需要定义不同的常量和宏。出于这个原因,我选择了一个头文件,我在其中定义了所有这些内容。我把这个头文件包含在我项目中的所有.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文件都需要它。我不是一个专业的程序员,但我想听听基于这个原理进行大型模拟的一般意见。你有什么建议吗?

2 个答案:

答案 0 :(得分:2)

小心宏。它们看起来像函数,但语义不同,因为在您的示例中对(x)进行了双重评估,这可能会产生性能影响或破坏逻辑。例如,使用宏max / min / abs:

实施例。 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 instead of PI))

答案 1 :(得分:-3)

至少你应该将你的const变量定义为 static ,以避免错误和编译器警告(可能的)多个包含:

static const double PI = 3.1415926535;

另一种方法是在单个 .cpp 文件中定义PI,然后在标题中定义 extern