这是Tcl语言中的一段代码
#define TclpSysAlloc(size) malloc(size)
#define TclpSysFree(ptr) free(ptr)
#define TclpSysRealloc(ptr, size) realloc(ptr, size)
这有什么好处呢?或者这是一条必须遵守的规则?
这是Tcl语言中的一段代码
#define TclpSysAlloc(size) malloc(size)
#define TclpSysFree(ptr) free(ptr)
#define TclpSysRealloc(ptr, size) realloc(ptr, size)
这有什么好处呢?或者这是一条必须遵守的规则?
当然,由于代码的可移植性.在所有的开放源码项目中,开发人员更喜欢在代码的某些部分使用宏,而不是原始函数.宏提供了一个预编译(在运行时不需要额外成本)的机会来抽象函数.假设我们需要使用一个可在多台机器和操作系统上使用的开源项目.很明显,开发人员必须提供一些宏来使他们的项目可移植.例如,堆管理是一种基于操作系统的服务,其功能通常依赖于操作系统.如果我们假设嵌入式系统和实时操作系统,你应该考虑到有这么多的机器体系 struct 和操作系统(除了Win或Linux).
因此,开发人员提供一个类似*_port.h
的头文件,根据目标平台定义基本函数,并将这些函数抽象.
例如,不同操作系统中的内存分配:
免费实时操作系统:
pvPortMalloc
TI SysBIOS:
一百零二
Unix:
malloc