这是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

C++相关问答推荐

如何在C中通过转换为char * 来访问float的字节表示?

如何将匿名VLA分配给指针?

如何在C中只使用一个带双方括号([i][j])访问语法的malloc来分配动态大小的2d数组?

需要大整数和浮点数.使用long long int和long double

堆栈帧和值指针

如何一次获取一个字符

难以理解Makefile隐含规则

我的程序在收到SIGUSR1信号以从PAUSE()继续程序时总是崩溃()

VS代码';S C/C++扩展称C23真关键字和假关键字未定义

实现简单字典时C语言中的段错误

如何在C中打印包含扫描字符和整数的语句?

我怎么才能用GCC编译一个c库,让它包含另一个库呢?

指向不同类型的指针是否与公共初始序列规则匹配?

使用nmake for程序比Hello World稍微复杂一些

C将数组传递给函数以修改数组

C语言中MPI发送接收字符串时出现的分段错误

搜索使用int代替time_t的用法

从另一个宏函数调用C宏

Struct 内的数组赋值

比 * 更快的乘法