?? comm.h
字號:
// Comm.h 公共頭文件
// Ver 1.0.0.0
// 版權(quán)所有(C) 何渝, 2002
// 最后修改: 2002.5.31
#ifndef _COMM_H //避免多次編譯
#define _COMM_H
/******
由于NDEBUG是為程序調(diào)試(debug)期間使用的,當(dāng)調(diào)試期完畢,程序出
發(fā)行版(release)后,NDEBUG將失去作用。為了能夠使assert()函數(shù)在發(fā)行
版中也可以使用,則定義了下面的條件編譯NDEBUG,意思為:
如果已經(jīng)定義NDEBUG,則定義宏Assert(x):當(dāng)x為假時,執(zhí)行throw,
交由系統(tǒng)已定義的方式處理;否則將Assert(x)定義為函數(shù)assert(x),該
函數(shù)對 參數(shù)x進(jìn)行測試:x為假時,函數(shù)終止程序并打印錯誤信息。
*****/
#ifdef NDEBUG
#define Assert(x) if (!x) throw;
#else //否則用系統(tǒng)定義的函數(shù)assert()處理
#include <cassert>
#define Assert(x) assert(x);
#endif //NDEBUG
#include <complex> //模板類complex的標(biāo)準(zhǔn)頭文件
#include <valarray> //模板類valarray的標(biāo)準(zhǔn)頭文件
using namespace std; //名字空間
const float FLOATERROR = 1.0e-6F;
const double DOUBLEERROR = 1.0e-15;
const long double LONGDOUBLEERROR = 1.0e-30;
const double GoldNo = 0.618033399; //黃金分割常數(shù)(1.0-0.381966)
//取x絕對值
template <class T>
long double Abs(const T& x);
//取x符號,+-或0
template <class T>
T Sgn(const T& x);
//比較兩float浮點(diǎn)數(shù)相等
bool FloatEqual(float lhs, float rhs);
//比較兩float浮點(diǎn)數(shù)不相等
bool FloatNotEqual(float lhs, float rhs);
//比較兩double浮點(diǎn)數(shù)相等
bool FloatEqual(double lhs, double rhs);
//比較兩double浮點(diǎn)數(shù)不相等
bool FloatNotEqual(double lhs, double rhs);
//比較兩long double浮點(diǎn)數(shù)相等
bool FloatEqual(long double lhs, long double rhs);
//比較兩long double浮點(diǎn)數(shù)不相等
bool FloatNotEqual(long double lhs, long double rhs);
//求x與y的最小值,返回小者
template <class T>
T Min(const T& x, const T& y);
//求x與y的最大值,返回大者
template <class T>
T Max(const T& x, const T& y);
//打印數(shù)組(向量)所有元素值
template <class T>
void ValarrayPrint(const valarray<T>& vOut);
//打印某個指定數(shù)組(向量)元素值
template <class T>
void ValarrayPrint(const valarray<T>& vOut, size_t sPosition);
#include "Comm.inl" //實(shí)現(xiàn)
#endif // _COMM_H
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -