2

物理システムのモデリングに使用している大規模なプログラムがあります。したがって、さまざまな定数とマクロを定義する必要があります。このため、これらすべてを定義する1つのヘッダーファイルを選択しました。必要に応じて、このヘッダーファイルをプロジェクトのすべての.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

私の.cppファイルの多くがそれを必要とするので、私がここに含めるライブラリfstream。私はプロのプログラマーではありませんが、この原理に基づいて大規模なシミュレーションを行うという一般的な意見を聞きたいと思います。何か提案はありますか?

4

2 に答える 2

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))

代わりにインライン関数を使用してください。また、 PIの代わりにTauを使用する必要があります))

于 2013-02-05T13:15:35.943 に答える
-3

少なくとも、(可能性のある)複数の包含に関するエラーやコンパイラの警告を回避するために、const変数を静的として定義する必要があります。

static const double PI = 3.1415926535;

別のアプローチは、単一の.cppファイルでPIを定義し、それをヘッダーで拡張することです。

于 2013-02-05T13:13:58.250 に答える