⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cdhouse.h

📁 一个很好的分子动力学程序
💻 H
字号:
#ifndef __CDHOUSE_H#define __CDHOUSE_H/*************************************************************************Function Prototypes*************************************************************************/void StartProgramTimer(void);void CleanAfterError(void);void CleanBeforeEnd(void);char *GetCurrentTimeStr (void);/*************************************************************************Debugging Macros*************************************************************************//*Debugging Macro:	Test assertion, if failed list file and line number*/#define ASSERT(TEST) if (!(TEST)) \	printf ("Failed assertion (%s) in file %s line %i.\n", \	#TEST, __FILE__, __LINE__);/*Debugging Macro:	Print out variable name and value*/#define WRITEVAR(VAR_NAME,VAR_TYPE) \	if (Debug_g) \		{ \		printf ("FILE %s LINE %i :", __FILE__, __LINE__); \		printf ("%s = ", #VAR_NAME); \		printf (#VAR_TYPE, (VAR_NAME) ); \		printf ("\n"); \		}/*Debugging Macro:	Print out debugging note*/#define WRITENOT(MSG) \	if (Debug_g) \		{ \		printf ("FILE %s LINE %i :", __FILE__, __LINE__); \		printf ("  (%s)\n", MSG); \		}/*Debugging Macro: Use BORLAND C++ DOS routine for checking memory heap*/#if 0#define CHECK_HEAP \	if (heapcheck()<0)  \		{ \		printf ("*** INTERNAL ERROR in %s line %i.  ", __FILE__, __LINE__); \		printf ("Memory heap is corrupted.\n"); \		}#else#define CHECK_HEAP#endif/*************************************************************************Utility Macros*************************************************************************//*Allocate array and test for NULL allocationsIf NULL allocation then print error and call CleanAfterError()*/#define ALLOCATE(VAR,TYPE,NUM) \	{ \	if (VAR != NULL) \		{ \		printf ("FILE %s LINE %i:  ALLOCATE is freeing variable %s\n", \			__FILE__, __LINE__, #VAR); \		free (VAR); \		} \	VAR = (TYPE *) calloc ( (NUM), sizeof ( TYPE ) ); \	if ((VAR) == NULL) \		{ \		printf ("ERROR\n"); \		printf ("   Cannot allocate variable %s.\n", #VAR); \		printf ("   Number of Elements %i\n", NUM); \		printf ("   Size   of Elements %i\n", sizeof(TYPE)); \		CleanAfterError(); \		} \	}/*  Reallocate storage - if new storage is  zero, call free()    and set pointer to NULL - if old storage was zero, call calloc() - if new storage > old,    call realloc() and initialize new storage - if new storage < old,    call realloc()*/#define REALLOC(PTR,TYPE,OLD_NUM,NEW_NUM)  \	{   \	/*  Free existing pointer  */    \	if ((NEW_NUM)==0)   \		{   \		if ((PTR)!=NULL)   \			{   \			free (PTR);   \			(PTR) = NULL;   \			}  \		}  \	/*  Get new storage  */  \	else   \		{   \		if ((PTR)==NULL)   \			{  \			(PTR) = (TYPE *) calloc ( (NEW_NUM), sizeof (TYPE) );   \			}  \		else   \			{  \			(PTR) = (TYPE *) realloc ( (PTR), (NEW_NUM) * sizeof (TYPE) ) ;  \			}  \   	if ((PTR) == NULL)   \   		{   \   		printf ("ERROR\n");   \   		printf ("   Cannot allocate variable %s.\n", #PTR);   \   		printf ("   Number of Elements %i\n", (NEW_NUM));   \   		printf ("   Size   of Elements %i\n", sizeof(TYPE));   \   		CleanAfterError();   \   		}   \		if ((NEW_NUM)>(OLD_NUM))  \			memset ( &((TYPE *) (PTR))[(OLD_NUM)], 0, ((NEW_NUM)-(OLD_NUM)) * sizeof(TYPE));  \		}  \	}  #define FREE(VAR) \	if ((VAR)!=NULL) \		{ \		free (VAR); \		(VAR) = NULL; \		}/*  Simple loop (this macro help reduce typos)	*/#define LOOP(INDEX,LIMIT) \	for (INDEX=0; INDEX<(LIMIT); INDEX++)/*  Square a token  */#define SQR(X)  ((X)*(X))/*************************************************************************Global Variables*************************************************************************/extern int Debug_g;#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -