river的编译中,最
需要注意的就是options.h的配置,只有好的配置,编译出来的driver才稳定,实用。
这一讲采用share.tomud.com德
v22pre11源码
考虑到所面对的对象,只讲解实用性较强的选项。
1.兼容篇
#undef HAS_STATUS_TYPE
旧
版mudos中有status这个修饰词,如果需要应#define
#define SANE_EXPLODE_STRING
例子中讲得
很明白
如果undef 的话 explode("..x.y..z..", ".") 结果是 ({ "x", "y", "", "z",
"" })
否则是 ({ "", "x", "y", "", "z", "" })
通常应该define使用
#undef
REVERSIBLE_EXPLODE_STRING
定义这个以后是({ "", "", "x", "y", "", "z", "", ""
})
通常undef
#undef NO_ADD_ACTION
#undef NO_ENVIRONMENT
#undef
NO_WIZARDS
这3个没说的,作用大家都知道,所以要undef
2。杂项
#undef CUSTOM_CRYPT
这
个是使用Md5的选项,不过通常不使用。下面的文章中我回重点讲如何使用Md5
#define ARRAY_STATS
这个是提供
array的选项,也就是int *,string *,object *之类的。。。
#define LOG_CATCHES
纪录
catch()函数引发的错误
#define ARGUMENTS_IN_TRACEBACK
在错误中显示行数之类的东西。
#define
LOCALS_IN_TRACEBACK
在错误中显示变量名称
#ifndef LATTICE
#define
CONFIG_FILE_DIR "/home/v22pre11/bin"
#else
#define CONFIG_FILE_DIR
"etc:"
#endif
默认的config dir,通常根本不需要改
#define DEFAULT_PRAGMAS
PRAGMA_WARNINGS + PRAGMA_SAVE_BINARY + PRAGMA_OPTIMIZE +
PRAGMA_ERROR_CONTEXT
下面具体解释各个pragma
* PRAGMA_STRICT_TYPES:
严格的书写检查 不需要
* PRAGMA_WARNINGS: 显示warning 需要
*
PRAGMA_SAVE_TYPES: 保存函数参数的类型,并且在继承调用中检查 不需要
*
PRAGMA_SAVE_BINARY: 保存.b文件 需要
* PRAGMA_OPTIMIZE:
进行代码优化,注:在v22.b13以前版本中存在bug,容易引发死机。so 不需要
*
PRAGMA_ERROR_CONTEXT:在错误报告出错的行号 need
#undef NO_RESETS
#undef
LAZY_RESETS
reset大家都需要
#define SAVE_EXTENSION ".o"
dbase文件后缀
#define
NO_ANSI
#define STRIP_BEFORE_PROCESS_INPUT
以上两个选项可以在输入中过滤ascii字符,
以避免出现问题
#define TRAP_CRASHES
当机的时候执行master.c中的crash()
#undef
DROP_CORE
当机的时候释放core
#define THIS_PLAYER_IN_CALL_OUT
在
call_out()中使用this_player()
#define SNOOP_SHADOWED
#define
RECEIVE_SNOOP
提供snoop()函数
#undef NO_BUFFER_TYPE
我们需要buffer类
型,ftpd采用的就是buffer
#define BINARIES
运行.b代码
#undef
ARRAY_RESERVED_WORD
可以用int array xxx 代替 int *
#undef PACKAGE_DB
#ifdef
PACKAGE_DB
#define MYSQL /* MiniSQL, it's small; it's free
*/
#endif
提供mysql
#define PACKAGE_UIDS
提供uid,euid
#define
AUTO_SETEUID
中文mud一般需要define这个选项
#define HEARTBEAT_INTERVAL
2000000
默认的心跳
#define MAX_SAVE_SVALUE_DEPTH 25
保证xxx\xxxx\xxx
\xxx不超过25个
#define CFG_MAX_LOCAL_VARIABLES 50
一个文件中最多的变量个数
#define
CFG_MAX_CALL_DEPTH 50
最多的递归深度
好了,这些就是常用的几个变量,拿到新的src
以后,首先设置options.h哦
还有,记得build的时候要先make clean才行。